我正在学习laravel。我想知道如果我可以在lalovel模型中使用查询构建器来扩展Eloquent。我读到MVC,模型应该很胖,控制器必须很小。但是当我尝试使用mvc做一些事情,例如将post插入db或从数据库中提取帖子时,我的控制器会保留大部分查询。
答案 0 :(得分:0)
我在Laravel的个人观点。根据我在这两年中看到的学习模型控制器或路线正确。
首先。在路线上练习,做一些代码。你可以在Laravel.com找到一些例子。
其次。试着进入重构。这意味着......你必须改进你的代码。
希望它有所帮助。
答案 1 :(得分: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();