2017-09-15 50 views
0

我有产品型号和它的拥有搜索瓢 ,这是在查询 代码3 orwhere和一个地方laravel 5.3

public static function searchScoop($keyword) 
{ 
    if(!Auth::check()) 
    { 
     $data = Item::limit(30)->where('item_id','like','%'.$keyword.'%')-> 
     orwhere('item_name','like','%'.$keyword.'%')-> 
     get(['id','item_id','item_name','item_price','item_total','item_color','item_main_category','item_sub_category','item_sub_sub_category','item_q_in_c','item_last_in','item_total_in','item_inserter','item_state','item_admin','item_area','item_row','item_location','created_at','updated_at','deleted_at']); 
    } 
    else 
    { 
     $data = Item::limit(30)->withTrashed()->where('item_id','like','%'.$keyword.'%')-> 
     orwhere('item_name','like','%'.$keyword.'%')-> 
     orwhere('item_note','like','%'.$keyword.'%')-> 
     orwhere('item_barcode','=',$keyword)-> 
     get(['id','item_id','item_name','item_price','item_total','item_color','item_main_category','item_sub_category','item_sub_sub_category','item_q_in_c','item_last_in','item_total_in','item_inserter','item_state','item_admin','item_area','item_row','item_location','created_at','updated_at','deleted_at']); 
    } 
    return $data; 
} 

和IM试图让和statment,所以我加入这个

 else 
    { 
     $data = Item::limit(30)->withTrashed()-> 
     where('item_area','<>',2)-> 
     where('item_id','like','%'.$keyword.'%')-> 
     orwhere('item_name','like','%'.$keyword.'%')-> 
     orwhere('item_note','like','%'.$keyword.'%')-> 
     orwhere('item_barcode','=',$keyword)-> 
     get(['id','item_id','item_name','item_price','item_total','item_color','item_main_category','item_sub_category','item_sub_sub_category','item_q_in_c','item_last_in','item_total_in','item_inserter','item_state','item_admin','item_area','item_row','item_location','created_at','updated_at','deleted_at']); 
    } 
    return $data; 

而且dosnot工作 我还是从区域2 骑上项目,这是查询时我改变得到toSql

select * from `items` where `item_area` <> ? and `item_id` like ? or `item_name` like ? or `item_note` like ? or `item_barcode` = ? limit 30 

任何帮助,请

+1

尝试'这里( '!=' 'item_area',2)' –

+0

感谢米拉罐仍然是相同的 –

回答

1

尝试这样的:

$data = Item::limit(30)->withTrashed()-> 
    where('item_area','<>',2) // you need this condition to be true always 
    ->where(function ($query) use ($keyword) { // and at least one of this or Am I wrong? 
    $query->where('item_id','like','%'.$keyword.'%')-> 
    orwhere('item_name','like','%'.$keyword.'%')-> 
    orwhere('item_note','like','%'.$keyword.'%')-> 
    orwhere('item_barcode','=',$keyword); 
    }) 
    ->get(['id','item_id','item_name','item_price','item_total','item_color','item_main_category','item_sub_category','item_sub_sub_category','item_q_in_c','item_last_in','item_total_in','item_inserter','item_state','item_admin','item_area','item_row','item_location','created_at','updated_at','deleted_at']); 
+0

我这样做,并gat内部服务器错误 –

+1

已修复,请立即尝试! – aaron0207

+0

其工作感谢之人 –