Laravel 如何";“由……订购”;使用Builder建立一个有说服力的关系

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

我必须从Laravel 4中的一个关系中订购一个查询。有两种模型:
任务
子项目

任务中
我与
子项目
有关系。这样:

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