gpt4 book ai didi

Laravel eloquent 获取相关表的最新行

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

我有两张 table ,书籍 , 和 章节 .一本书有很多章节。

书籍型号:

public function chapters() {
return $this->hasMany(Chapter::class);
}

章节型号:
public function book() {
return $this->belongsTo(Book::class);
}

我想使用这样的单个查询获取带有自己最新章节的书籍列表:
$books = Book::with(['authors', 'categories', 'chapters' => function($q) {
$q->orderBy('updated_at', 'desc')->first();
}]->get();

但它不起作用。章节返回一个空数组。如果我删除 第一个() 在子查询中,它正常工作。

有没有办法只用一个查询来做到这一点。我不想获取所有相关章节然后保留一个,或使用多个查询。我感觉更好的唯一方法是使用 加入 , 这样对吗?

任何帮助将不胜感激。谢谢!

最佳答案

因为关系是单独的查询,所以不能对预先加载的关系添加限制。如果这样做,这会限制整个关系查询,它不会作为每个相关对象的限制。

幸运的是,您的要求可以简单地通过附加关系来实现:

public function latestChapter() {
return $this->hasOne(Chapter::class)->latest();
}

现在,而不是急切加载整个 chapters关系,你可以急切地加载你的新 latestChapter关系。
$books = Book::with(['authors', 'categories', 'latestChapter'])->get();

关于Laravel eloquent 获取相关表的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600674/

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