或where子句-Laravel雄辩

或where子句-Laravel雄辩,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我有一个疑问: if($keyword){ array_push($where, ['name_en', 'LIKE', '%'.$keyword.'%']); } 问题是我有andname\u fr列,我需要使用或子句-array\u push($where,['name\u fr','LIKE','%'。$keyword.%')) 我不能使用->或where,因为我有许多动态搜索字段-它们可能存在或不存在 例如: if($fromPrice){ array_push($wh

我有一个疑问:

if($keyword){
    array_push($where, ['name_en', 'LIKE', '%'.$keyword.'%']);
}
问题是我有and
name\u fr
列,我需要使用
子句-
array\u push($where,['name\u fr','LIKE','%'。$keyword.%'))

我不能使用
->或where
,因为我有许多动态搜索字段-它们可能存在或不存在

例如:

if($fromPrice){
    array_push($where, ['price', '>=', $fromPrice]);
}
if($toPrice){
    array_push($where, ['price', '<=', $toPrice]);
}
我需要通过另一个查询选择
WHERE name_en LIKE%val%或name_fr LIKE%val%


有没有一种方法可以以某种方式使用
where
,“OR”和
类似的
,包括
$where
数组中的另一个值?

来实现这一点,建议您按如下方式划分查询,不要将
关键字
条件放在
$where
数组中:

$query = Property::with(array(
    'photos'=>function($query){
            $query->select(['car_id', 'name']);
        }
))->where($where);

if($keyword){

     $query = $query->where(function ($query) use ($keyword) {
                  $query->where('name_fr', 'like', $keyword)
                  ->orWhere('name_en', 'like', $keyword);
     });
}

$cars = $query->paginate(10);

要实现这一点,建议您按如下方式划分查询,不要将
关键字
条件放在
$where
数组中:

$query = Property::with(array(
    'photos'=>function($query){
            $query->select(['car_id', 'name']);
        }
))->where($where);

if($keyword){

     $query = $query->where(function ($query) use ($keyword) {
                  $query->where('name_fr', 'like', $keyword)
                  ->orWhere('name_en', 'like', $keyword);
     });
}

$cars = $query->paginate(10);
你也可以一起去

$propertyQuery = Property::query();
if($keyword){
   $propertyQuery->where(function($query) use ($keyword){
                    $query->where('name_fr', 'LIKE', '%'.$keyword.'%')->orWhere('name_en', 'LIKE', '%'.$keyword.'%');
           });
         }
$cars = $propertyQuery->paginate(10);
你也可以一起去

$propertyQuery = Property::query();
if($keyword){
   $propertyQuery->where(function($query) use ($keyword){
                    $query->where('name_fr', 'LIKE', '%'.$keyword.'%')->orWhere('name_en', 'LIKE', '%'.$keyword.'%');
           });
         }
$cars = $propertyQuery->paginate(10);

问题是我还有另外一套where。我有$where
['id'=>,''.]
(如果关键字存在)其中的
关键字
类似于此列或
关键字
类似于另一列。问题是我有另一组where。我有$where
['id'=>,''.]
(如果关键字存在)其中的
关键字
类似于此列或
关键字
类似于另一列。问题是我有另一组where。我有$where
['id'=>,''.]
(如果关键字存在)where
关键字
类似于此列或
关键字
类似于另一列。但是我发现我不能使用->where($where)->where(//关键字查询)如果我删除第一个查询
Property::with
,那么按关键字的查询工作正常。有了它就没有了。没有关键字,第一次查询当然有效。好的,我用三个部分完成了它。首先检查
if(count($where))
,然后应用它,2。检查关键字和最新执行,工作正常。谢谢:)。问题是我还有一套where。我有$where
['id'=>,''.]
(如果关键字存在)where
关键字
类似于此列或
关键字
类似于另一列。但是我发现我不能使用->where($where)->where(//关键字查询)如果我删除第一个查询
Property::with
,那么按关键字的查询工作正常。有了它就没有了。没有关键字,第一次查询当然有效。好的,我用三个部分完成了它。首先检查
if(count($where))
,然后应用它,2。检查关键字和最新执行,工作正常。谢谢:)。