在同一模型上多次使用where查询

时间:2019-09-01 15:55:07

标签: php laravel

我在Laravel上有一个查询,希望我的用户能够按类型过滤房屋。我的问题是我想在查询中多次使用它。

例如,在1到10的10个复选框中,有10种不同类型的房屋,用户可以仅单击一种进行过滤,也可以单击全部10种。我想将所有房屋归还给用户。

如果我必须使用orwhere,则在我的查询子句中将是10 orwhere。我想知道这是否是最好的方法:

  $type_id = $request->get('type_id');
  $somefiled= $request->get('somefiled');

        $data = home::with('city')
            ->where('type_id',$type_id)->get()
            ->orWhere('somefiled',$somefiled)

1 个答案:

答案 0 :(得分:1)

如果用户发送的房屋类型不止一种,请将其作为表单数据中的一个数组引入,并使用whereIn进行查询:

$data = home::with('city')
        ->whereIn('type_id', $type_id)->get();

这将适用于一种或多种类型的选择。为类型创建数组时,您可能希望将变量重命名为复数形式以防止混淆(例如$types$type_ids)。

编辑

as whereIn充当Orwhere,但仅对于数组,您可以简单地使用它,而不是对多个查询使用orwhere。

       $data = home::with('city')
        ->whereIn('type_id', $type_id)
->whereIn('otherfields', $otherfields')
->get();