如何将查询变量应用于 whereHas 闭包?

How to apply query variable to whereHas closure?

我有一个存储在变量中的查询。

如何将此变量应用于 whereHas 闭包?

$productQuery = ...; // complex query comes from another class

return CategoryModel::whereHas('products', function ($query) use($productQuery) {
    $query->apply($productQuery) // I need to apply product query here but Laravel has not this method
})->get();

在搜索 Laravel QueryBuilder class 后,我找到了一个方法 mergeConstraintsFrom,通过这个方法,我可以在 whereHas 闭包中重用我的查询。最终代码是:

$productQuery = ...; // complex query comes from another class

return CategoryModel::whereHas('products', function ($query) use($productQuery) {
    $query->mergeConstraintsFrom($productQuery);
})->get();