1
whereHas
Laravel中的方法使用来自MySQL的EXISTS
。问题是,当例如品牌和文字指定的时候,所有带品牌或不带品牌的文字都存在于文字中......但是,当品牌指定它时,只需要带有品牌和文字的品牌。 $ parts = AutoPart \ Part :: has('classifier') - > with(['details','classifier','order','place']) - > orderBy('id','desc');有没有什么可以严格的在Laravel的方法?
if ($brand = $request->get('brand', FALSE)) {
$parts->whereHas('details', function($query) use($brand) {
$query->where('brand', '=', $brand);
});
}
if ($model = $request->get('model', FALSE)) {
$parts->whereHas('details', function($query) use($model) {
$query->where('model', '=', $model);
});
}
if ($text = $request->get('text', FALSE)) {
if (strlen($text) > 0) {
$parts->whereHas('details', function($query) use($text) {
$query->where('notes', 'LIKE', '%' . $text . '%');
});
$parts->orWhereHas('classifier', function($query) use($text) {
$query->where('name', 'LIKE', '%' . $text . '%');
});
}
}