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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何“按...排序”使用Builder的雄辩关系相关的知识,希望对你有一定的参考价值。

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

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)

以上是关于如何“按...排序”使用Builder的雄辩关系的主要内容,如果未能解决你的问题,请参考以下文章

如何从雄辩关系中的第三个表中获取数据雄辩的多对多关系

如何使用父枢轴值作为条件获得雄辩的关系

如何在 laravel 雄辩的关系中使用 where 子句

雄辩的关系 laravel

雄辩地查询与嵌套 WHERE 的关系

Laravel 雄辩的一对多关系