Laravel 查询关系的更有效方法
我正在表(产品)上构建查询 产品具有外键、包装器id、 每个包装器依次有一个外键包装器\u分类\u id 查询的这一部分需要根据可能已作为输入参数传递的包装器\分类\ id数组修改搜索 这就是我正在做的: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_
// $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');