Laravel QueryBuilder - Select 每个外键对应 N 行
Laravel QueryBuilder - Select N rows for each foreign key
我正在尝试为 table 中的每个外键检索最新的 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();
等等。我如何将此作为对所有外键的单个查询来执行?
谢谢!
你可以这样做:
Category::with(['article' => function($q){
$q->orderBy('id', 'desc');
$q->limit(5);
})->get();
当然,您需要在模型中创建外键关系才能使用该功能。
这里是如何创建关系的文档:https://laravel.com/docs/5.4/eloquent-relationships#one-to-many
据此:
它本身不受支持。相反,您必须使用延迟预加载。
我正在尝试为 table 中的每个外键检索最新的 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();
等等。我如何将此作为对所有外键的单个查询来执行?
谢谢!
你可以这样做:
Category::with(['article' => function($q){
$q->orderBy('id', 'desc');
$q->limit(5);
})->get();
当然,您需要在模型中创建外键关系才能使用该功能。
这里是如何创建关系的文档:https://laravel.com/docs/5.4/eloquent-relationships#one-to-many
据此:
它本身不受支持。相反,您必须使用延迟预加载。