Laravel模型问题

时间:2015-02-01 05:50:20

标签: laravel-4

我正在学习laravel。我想知道如果我可以在lalovel模型中使用查询构建器来扩展Eloquent。我读到MVC,模型应该很胖,控制器必须很小。但是当我尝试使用mvc做一些事情,例如将post插入db或从数据库中提取帖子时,我的控制器会保留大部分查询。

2 个答案:

答案 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();