簡體   English   中英

限制Laravel中的關系

[英]Limiting relationships in Laravel

我有一個具有hasMany('Comments')關系的模型Post。 我想獲取所有具有“評論”關系的帖子,但僅獲取每個帖子的最新評論。 並且由於有成千上萬個帖子,每個帖子都有成千上萬的評論,因此由於性能問題(例如,為每個帖子加載所有評論,然后執行$ post-> comments [0]-> value),這樣的選項是不可能的:

Post::with('comments' => function($query){
    $query->orderBy('created_at','desc')
});

我也不能這樣做:

Post::with('comments' => function($query){
    $query->orderBy('created_at','desc')->limit(1)
});

因為這是行不通的。

我完全確定,我不是唯一一個遇到此問題的人,而且確實設法找到了一些“尋求解決方案的嘗試”,但並不是一個穩定的工作代碼示例。 有人可以幫忙嗎?

試試這個:假設您已經在Post模型中定義了“評論”關系。 這是您可以采用的所有注釋的方式:

App\Post::all()->comments()->orderBy('comments.created_at')->take(1)->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM