2

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

Task我与Subproject. 这边走:

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

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

有没有办法做到这一点?

4

2 回答 2

1

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

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

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

foreach($subprojects as $project) {
    echo $project->task->id;
}
于 2013-07-04T18:13:55.467 回答
1

从评论:

我想根据父表订购。像这样:select subprojects.id,tasks.id from tasks 加入 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)
于 2013-07-05T07:34:22.883 回答