如何“按...排序”使用Builder的雄辩关系

时间:2013-07-04 17:01:48

标签: laravel laravel-4 relationship eloquent

我必须从Laravel 4中的关系中订购查询。有两种模型:TaskSubproject

Task我与Subproject有关系。这样:

public function subproject() 
{
    return $this->belongsTo('Subproject');
}

从我的Controller,我想使用Subproject订购Laravel Builder而不是加入。

有办法吗?

2 个答案:

答案 0 :(得分:1)

您要做的是eager loading。在单个请求中加载模型及其链接模型。您可以使用Eloquent::with()方法执行此操作,如下所示:

$subprojects = Subproject::with('task')->orderBy('subproject.id')->get();

然后你得到一个子项目列表,在内存中有链接的任务,你可以在没有SQL请求的情况下调用任务:

foreach($subprojects as $project) {
    echo $project->task->id;
}

答案 1 :(得分:0)

来自评论:

  

我想根据父表订购。像那样:选择   subprojects.id,tasks.id来自任务加入子项目   tasks.subproject_id = subprojects.id order by subprojects.id

可以通过以下方式获得:

DB::table('tasks')
->join('subprojects', 'tasks.subproject_id', '=', 'subprojects.id')
->order_by('subprojects.id', 'ASC') // DESC
->select('subprojects.id,', 'tasks.id')
->get(); // for pagination you can use: ->paginate(5)