0

我正在尝试为表中的每个外键检索最新的 5 行,因此想象以下数据库结构:

CATEGORY (id, name)
ARTICLE (id, category_id, title)

我想做这样的事情:

Article::where("category_id", 1)
       -> latest()
       -> limit(5)
       -> get();

Article::where("category_id", 2)
       -> latest()
       -> limit(5)
       -> get();

等等。作为对所有外键的单个查询,我将如何做到这一点?

谢谢!

4

2 回答 2

0

你可以这样做:

Category::with(['article' => function($q){
        $q->orderBy('id', 'desc');
        $q->limit(5);
    })->get();

当然,您需要在模型中创建外键关系才能使用该功能。

以下是如何创建关系的文档:https ://laravel.com/docs/5.4/eloquent-relationships#one-to-many

于 2017-01-27T19:08:28.650 回答
0

根据这个:

https://laracasts.com/discuss/channels/eloquent/extending-eloquents-builder-to-eager-load-collections-w-limits?page=2

它本身不受支持。相反,您必须使用延迟加载。

于 2017-01-28T09:06:27.440 回答