小编Ale*_*lex的帖子

Laravel雄辩地从联接表中选择了最新的行

我有两个表Project和Projectnote

项目和项目说明之间存在一对多的关系。

我希望能够列出我的项目,并根据created_at日期选择最新的项目注释。

在Eloquent中可以做到这一点吗,我不知道。

谢谢你的帮助!

编辑:到目前为止,我有一个连接两个表的基本查询(如下)。但是,这只会选择存在注释的项目,而我会得到多行,其中每个项目有多个注释。

$projects = Project::join('projectnotes', 'projectnotes.project_id', '=', 'projects.id')
->select(array('projects.*', 'projectnotes.note as note'))
->get();
Run Code Online (Sandbox Code Playgroud)

join laravel eloquent

7
推荐指数
2
解决办法
3148
查看次数

左连接的 Laravel 排序结果

我正在尝试在 Laravel Eloquent 查询构建器中复制以下 SQL。

select a.name, b.note from projects a 
left join (select note, project_id from projectnotes order by created_at desc) as b on     (b.project_id = a.id) 
where projectphase_id = 10 group by a.id;
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

$projects = Project::leftjoin('projectnotes', function($join)
{
  $join->on('projectnotes.project_id', '=', 'projects.id');
})
->where('projectphase_id', '=', '10')
->select(array('projects.*', 'projectnotes.note as note'))
->groupBy('projects.id')
->get()
Run Code Online (Sandbox Code Playgroud)

除了获取最新的 projectnotes 之外,它适用于所有事情,它只返回输入到每个项目的 projectnotes 表中的第一个。

我需要通过 'created_at' desc 将订单放入左连接,但我不知道如何实现。

任何帮助将非常感激。

sql-order-by left-join laravel eloquent

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

eloquent ×2

laravel ×2

join ×1

left-join ×1

sql-order-by ×1