Laravel 如何";“由……订购”;使用Builder建立一个有说服力的关系
我必须从Laravel 4中的一个关系中订购一个查询。有两种模型:Laravel 如何";“由……订购”;使用Builder建立一个有说服力的关系,laravel,laravel-4,relationship,eloquent,Laravel,Laravel 4,Relationship,Eloquent,我必须从Laravel 4中的一个关系中订购一个查询。有两种模型:任务和子项目 在任务中我与子项目有关系。这样: public function subproject() { return $this->belongsTo('Subproject'); } 从我的控制器,我想使用Laravel Builder订购子项目,而不是联接 有办法吗?你想做的是。在单个请求中加载模型及其链接模型。您可以使用Eloquent::with()方法实现这一点,如下所示: $subproject
任务
和子项目
在任务中
我与子项目
有关系。这样:
public function subproject()
{
return $this->belongsTo('Subproject');
}
从我的控制器
,我想使用Laravel Builder
订购子项目
,而不是联接
有办法吗?你想做的是。在单个请求中加载模型及其链接模型。您可以使用Eloquent::with()
方法实现这一点,如下所示:
$subprojects=Subproject::with('task')->orderBy('Subproject.id')->get();
然后,您将在内存中获得一个包含链接任务的子项目列表,并且您可以在无需SQL请求的情况下调用任务:
foreach($project作为$project的子项目){
echo$project->task->id;
}
从评论中:
我想基于父表进行订购。像这样:选择
subprojects.id,来自任务的tasks.id在上加入子项目
tasks.subproject_id=subprojects.id按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)
我想我不清楚。关系是正确的,但我希望基于父表进行排序。这样:选择subprojects.id,tasks.id from tasks join subprojects on tasks.subproject_id=subprojects.id按subprojects.id排序您看到区别了吗?我确实想按子项目排序,但使用的是
elount
而不是join。谢谢你的回答!你需要什么样的结果?我认为您需要的是对象,而不是原始SQL请求中的数组或结果集。因此,我认为解决您的问题的方法是立即加载()。您可以执行以下操作:$subprojects=Subproject::with('task')->orderBy('Subproject.id')->get()代码>并获取子项目列表。然后您可以这样调用任务:foreach($project作为$project的子项目)echo$project->task->id是的,我想我会那样做。谢谢你,亚历山大!我编辑了我的答案,以便为后代提供更好的解释;)