Laravel 查询关系的更有效方法

Laravel 查询关系的更有效方法,laravel,Laravel,我正在表(产品)上构建查询 产品具有外键、包装器id、 每个包装器依次有一个外键包装器\u分类\u id 查询的这一部分需要根据可能已作为输入参数传递的包装器\分类\ id数组修改搜索 这就是我正在做的: // $query is already being built from above this line.... // wrapper_classification_id in input is an array if (Input::get('wrapper_

我正在表(产品)上构建查询

产品具有外键、包装器id、

每个包装器依次有一个外键包装器\u分类\u id

查询的这一部分需要根据可能已作为输入参数传递的包装器\分类\ id数组修改搜索

这就是我正在做的:

     // $query is already being built from above this line....
     // wrapper_classification_id in input is an array

    if (Input::get('wrapper_classification_id'))
    {
        $wrappers = Wrapper::whereIn('wrapper_classification_id', Input::get('wrapper_classification_id'))->get();
        $wrapperArray = [];
        foreach($wrappers as $wrapper) {
            $wrapperArray[] = $wrapper->id;
        }
        $query->whereIn('wrapper_id', $wrapperArray );
    }
有没有一种更有效的方法来处理您查询关系中某个值的情况

提前感谢,, 丰富的

或,尝试连接

$query->join('wrapper AS w', 'w.wrapper_classification_id', 'IN', Input::get('wrapper_classification_id'))
    ->whereIn('product.wrapper_id', 'w.id');

但不确定该确切代码是否有效。

假设产品模型具有
包装关系:

if(输入::has('wrapper\u classification\u id'))
{
$query->whereHas('wrapper',函数($q){
$q->其中('wrapper\u classification\u id',Input::get('wrapper\u classification\u id');
});
}
$query->join('wrapper AS w', 'w.wrapper_classification_id', 'IN', Input::get('wrapper_classification_id'))
    ->whereIn('product.wrapper_id', 'w.id');