本とチャプタの2つのテーブルがあります。 1つの本には多くの章があります。Laravel eloquent関連テーブルの最新行を取得
ブックモデル:
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();
しかし、動作しません。章は空の配列を返します。サブクエリ内でfirst()を削除すると、正常に動作します。
1つのクエリでこれを行う方法はありますか。私は関連するすべてのチャプターを取得し、1つを保持したり、複数のクエリーを使用したりしたくありません。私がより良く感じる唯一の方法は、がに参加することです、そうですか?
ご協力いただければ幸いです。ありがとう!
いいえ、分かりやすいはずです。 'limit()'を使うのはどうでしょう、あるいは見てみてはどうでしょう。(http://stackoverflow.com/questions/15229303/is-there-a-way-to-limit-the-result-with-eloquent-orm 〜の - laravel)。あなたがする必要があるのは、 '$ q-> orderBy( 'updated_at'、 'desc')を1に制限することです。 – Alex
1つの本は5k章以上あります。 – trinvh
クエリを1行に制限する**必要があります**。 – Alex