gpt4 book ai didi

sql - 如何检索所有用户的最后一篇文章

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

我试图让我的用户(实际上是作者,最多有 5-6 位作者)将他们的最后一篇文章显示在主页的侧边栏中。由于它们将列在主页中,因此我试图减少由于性能问题引起的 sql 查询量。我试过了;

$users=User::with(array('posts'=>function($query){

$query->take(1);
}))->get();

然而,它总共只有一个帖子,而不是每个用户一个。而且我的sql知识有限。

如何使用 Eloquent ORM、Query Builder 或原始 sql 查询来解决我的问题?

最佳答案

一个解决方案是在 User 模型上定义一个 hasOne 关系,按帖子 created_at 列排序。

public function lastPost()
{
return $this->hasOne('Post')->orderBy('created_at', 'desc');
}

那么你的查询就是这样。

$users = User::with('lastPost')->get();

要限制列,您可以在关系级别限制查询:

return $this->hasOne('Post')->select('id', 'user_id', 'title', 'created_at')->orderBy('created_at', 'desc');

或者当你使用 with 方法时:

$users = User::with(['lastPost' => function($query)
{
$query->select('id', 'user_id', 'title', 'created_at');
})->get();

请注意,您还需要 user_idcreated_at 列,因为它们是 WHEREORDER BY 所必需的 查询中的子句。

关于sql - 如何检索所有用户的最后一篇文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121543/

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