gpt4 book ai didi

join - Laravel Eloquent 地从联接表中选择了最新的行

转载 作者:行者123 更新时间:2023-12-04 12:41:03 25 4
gpt4 key购买 nike

我有两个表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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com