我必须从Laravel 4的关系中订购一个查询。有两个模型:Task
和Subproject
。
在Task
,我与Subproject
有关系。这条路:
public function subproject()
{
return $this->belongsTo('Subproject');
}
从我的Controller
,我想用Subproject
订购Laravel Builder
而不是加入。
有办法吗?
你想要做的是eager loading。在单个请求中加载模型及其链接模型。您可以使用Eloquent::with()
方法执行此操作,如下所示:
$subprojects = Subproject::with('task')->orderBy('subproject.id')->get();
然后,您将获得一个子项目列表,其中包含内存中的链接任务,您可以在不再需要SQL请求的情况下调用任务:
foreach($subprojects as $project) {
echo $project->task->id;
}
我想基于父表订购。像这样:select子项目.id,tasks.id来自任务连接子项目的task.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)