我在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)
答案 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();