2015-04-28 1 views
1

У меня есть вопрос относительно рамки laravel.Где мы пишем функции, которые обращаются к базе данных в laravel 5?

Я проверил сайт laracast, который помог мне запустить, а также несколько ресурсов здесь и там.

Прошу прощения за следующий вопрос о нобе, но могу ли я спросить, где я должен писать функции, чья роль заключается в изменении данных в базе данных? Функции, которые обычно используют созданные Eloquent ORM модели и вызывают необходимые изменения в БД. До сих пор я делал то, что создал папку в каталоге приложения под названием «classes», и я размещаю там классы утилиты, но я не уверен, что это следующие стандарты, налагаемые laravel 5.

Также касательно транзакций, должен ли я делать это в тех созданных функциях? или было бы лучше назвать процедуры, сделанные в базе данных? ». По моему личному мнению и опыту, я предпочитаю создавать процедуры для транзакций с базой данных, но я по-прежнему предпочитаю найти правильный путь для этого.

Спасибо всем!

ответ

1

Правильный ответ - там, где вы хотите, но, конечно, это не помогает пользователям, у которых нет опыта работы с этими типами фреймворков, прежде чем последует более упрямый ответ (для последней версии рамки L5 на время написания).

В Laravel5, если вы произвели команду artisan php artisan make:model, тогда сгенерированная модель будет сохранена в/App/*, поэтому это неплохая отправная точка. имея там свои модели, вы можете сделать новый /App/User();, и автозагрузчик PSR заберет это и автоматически загрузит для вас. Конечно, если вы считаете, что это слишком общее, вы можете сохранить их в/App/Models/* - изменить пространство имен модели и ссылаться на нее через new /App/Models/User();.

Одна важная вещь для реализации заключается в том, что в инфраструктурах MVC Models довольно неоднозначны и не относятся только к базе данных, а действительно к любой внешней базе данных. Model - это отображение внешних данных в формат, в котором может работать ваше приложение, поэтому Models больше не выделяет выделенный каталог.

Для общих «библиотек», я бы сказал - если он многократно используется, создайте пакет композитора. Если это не так, создайте/App/DescriptiveNamespace/*.

0

Я хочу рекомендовать вам эту книгу From Apprentice To Artisan.

Мне очень нравится эта концепция.

Контроллеры и маршруты служат посредником между HTTP и вашим приложением . При написании больших приложений не загромождайте их логикой вашего домена.

Итак, если кто-то спросит меня, где сделать операцию с базой данных, я скажу «Модель» в целом. Но мой ответ может отличаться в зависимости от бизнес-логики, что мне нужно делать и насколько велико мое приложение. Laravel уже предоставляет прекрасный способ совершения транзакций. Я обнаружил, что есть так много людей, которые любят процедуру базы данных, если вы предпочитаете использовать процедуры базы данных, это зависит от вас.

В технике каждый ответ может быть прав до определенного времени. И laravel достаточно гибкий, чтобы применить свой собственный любимый узор. Это своего рода свобода и своего рода опасность. :-) (У других людей может быть другое мнение).