我有两个表Project和Projectnote
项目和项目说明之间存在一对多的关系。
我希望能够列出我的项目,并根据created_at日期选择最新的项目注释。
这在 Eloquent 中可以做到吗,我不知道。
谢谢你的帮助!
编辑:到目前为止,我有一个连接两个表的基本查询(如下)。但是,这只会选择存在注释的项目,而我会得到多行,其中每个项目有多个注释。
$projects = Project::join('projectnotes', 'projectnotes.project_id', '=', 'projects.id')
->select(array('projects.*', 'projectnotes.note as note'))
->get();
最佳答案
您可以使用最新值加入表格:
->join('t1', function($join) {
$join->on('t1.t2_id', '=', 't2.id')
->on('t1.id', '=', DB::raw("(select max(id) from t1 WHERE t1.t2_id = t2.id)"));
如果您还想在t1没有值的地方加入,请使用leftJoin。您的情况如下所示:
$projects = Project::leftJoin('projectnotes', function($join) {
$join->on('projectnotes.project_id', '=', 'projects.id')
->on('projectnotes.id', '=', DB::raw("(SELECT max(id) from projectnotes WHERE projectnotes.project_id = projects.id)"));
})
->select(array('projects.*', 'projectnotes.note as note'))
关于join - Laravel Eloquent 地从联接表中选择了最新的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185944/