Mode
模型与hasMany
模型具有DataSet
关系。我想使用with()
方法加载数据集。除非我需要对每个DataSet
限制Mode
,否则它工作正常。以下代码无法正常工作。它限制DataSet
的所有结果,而不是每个Mode
单独限制。
$modes = $modes->with(['dataSets' => function ($query) use ($user, $count) {
// Select data sets of user from each mode
$query->join('data_set_user', 'id', '=', 'data_set_id')
->where('user_id', $user->id);
if(isset($count))
$query->limit($count);
}])->orderBy('order_value')
->get();
看看这段代码产生的查询:
SELECT * FROM `data_sets` INNER JOIN `data_set_user` on `id` = `data_set_id` where `data_sets`.`mode_id` in (?, ?, ?) and `user_id` = ? limit 5"
是否有Laravel方法使限制分别适用于每种模式?
答案 0 :(得分:2)
使用任何Laravel方法都是不可能的。
有些SQL有足够的方法来解决它,但是其他的没有,这是一个非常困难的问题。
问题已经多次提出:
最值得注意的是(最近):