2015-02-01 4 views
0

Я изучаю laravel. Я хочу знать, что если я могу использовать построитель запросов внутри модели laravel, которая расширяет Eloquent или нет. Я прочитал о MVC, что Модель должна быть толстой, а контроллеры должны быть тонкими. Но когда я пытаюсь сделать что-то с помощью mvc, например, вставляя сообщение в db или извлекая сообщения из базы данных, мои контроллеры содержат большинство запросов.Laravel Model issue

+1

Я думаю, что это время вы должны расширить свое чтение за MVC. В качестве отправной точки я бы посоветовал вам взглянуть на уроки начинающих на laracasts.com и участвовать в дискуссиях на форуме. – Gufran

ответ

0

мое личное мнение в Ларавеле. В соответствии с тем, что я вижу в течение этого двух лет, правильно изучайте контроллеры или маршруты.

Первый. практиковать на маршрутах, делать код. вы можете найти несколько примеров на Laravel.com.

Во-вторых. попытайтесь войти в рефакторинг. что означает ... что вам нужно улучшить свой код.

Надеюсь, это поможет.

0

Сохранение максимально возможной логики в ваших моделях - это действительно хорошая практика, потому что она сохраняет правила в одном месте. Например, если у вас есть модель сообщений в блоге, а не запрашивая модели в контроллере архивированных сообщений можно определить архивный атрибут в вашей модели, как это:

public function scopeArchived($query) { 
    return $query->where('archived', true); 
} 

после чего вы можете простой запрос для App\Post::archived()->get(). Если логика определения «архивированной записи» изменяется позже, вы можете изменить ее в одном месте. Это также означает, что вы можете легко подключить фильтры. Если, например, у вас есть атрибут для фильтрации по автору:

public function scopeWrittenBy($query, User $user) { 
    return $query->where('author', $user->id); 
} 

... Вы можете приковать их вместе в контроллере с:

$user = App\User::first(); 
$archived_user_posts = App\Post::archived()->writtenBy($user)->get();