Php with()方法中真的没有执行limit()的方法吗?(雄辩)

Php with()方法中真的没有执行limit()的方法吗?(雄辩),php,laravel,laravel-5,Php,Laravel,Laravel 5,模式模型与数据集模型有许多关系。我想用with()-方法加载数据集。它工作正常,除非我需要对每个模式下的数据集设置限制。以下代码无法按预期工作。它将数据集结果全部限制在一起,而不是按模式单独限制 $modes = $modes->with(['dataSets' => function ($query) use ($user, $count) { // Select data sets of user from each mode $query->join(

模式
模型与
数据集
模型有许多关系。我想用
with()
-方法加载数据集。它工作正常,除非我需要对每个
模式下的
数据集
设置限制。以下代码无法按预期工作。它将
数据集
结果全部限制在一起,而不是按
模式
单独限制

$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"

是否有任何方法可以使每个模式下的限制分别起作用

任何拉维方法都不可能做到这一点

有些SQL有足够的方法来解决这个问题,而其他SQL则没有,这是一个非常困难的问题

该问题已被多次提出:

最值得注意的是(最近):


任何拉威尔方法都不可能做到这一点

有些SQL有足够的方法来解决这个问题,而其他SQL则没有,这是一个非常困难的问题

该问题已被多次提出:

最值得注意的是(最近):


谢谢,我来看看!Staudenmeir,一个经常与Laravel合作的人,在SO上也很活跃,似乎解决了这个问题。我还没试过,不过你可以看看。谢谢你,我来看看!Staudenmeir,一个经常与Laravel合作的人,在SO上也很活跃,似乎解决了这个问题。我还没试过,但你可以看看