請你嘗試過什麼到現在纔開始明白你的問題。據我所瞭解,您可以建立vehicle_table查詢並加入您的其他表,做你的過濾器象下面這樣:
$vehicles = DB::table('vehicle_table')
->select('model_table.name as model_name', 'make_table.name as make_name', 'variant_table.name as variant_name')
->leftJoin('model_table','model_table.id','=', 'vehicle_table.model_id')
->leftJoin('make_table','make_table.id','=', 'model_table.make_id')
->leftJoin('variant_table','variant_table.id','=', 'vehicle_table.variant_id');
if($make_name){
$vehicles->where('make_table.name', 'like', '%' . $make_name . '%');
}
if($model_name){
$vehicles->where('model_table.name', 'like', '%' . $model_name . '%');
}
if($variant_name){
$vehicles->where('variant_table.name', 'like', '%' . $variant_name . '%');
}
$results = $vehicles->get();
$make_name, $model_name, $variant_name
將搜索表單值。
--UPDATE-- 如果你想通過搜索所有表的字符串(超過一個字),你可以做到以下幾點:
$words = explode(' ', $search);
$vehicles = DB::table('vehicle_table')
->select('model_table.name as model_name', 'make_table.name as make_name', 'variant_table.name as variant_name')
->leftJoin('model_table','model_table.id','=', 'vehicle_table.model_id')
->leftJoin('make_table','make_table.id','=', 'model_table.make_id')
->leftJoin('variant_table','variant_table.id','=', 'vehicle_table.variant_id');
foreach($words as $word){
$vehicles->where('make_table.name', 'like', '%' . $word. '%');
$vehicles->orWhere('model_table.name', 'like', '%' . $word. '%');
$vehicles->orWhere('variant_table.name', 'like', '%' . $word. '%');
}
$results = $vehicles->get();
發佈您的代碼,你試過這算什麼! –
您可以詳細地添加關於外鍵和表結構的詳細信息嗎? –