2017-09-15 4 views
0

i have Modell und sein hat Such Scoop und dies ist der Codedrei orWhere und ein, wo 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; 
} 

und im Versuch, in der Abfrage zu erhalten und statment so füge ich diese

 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; 

und es dosnot arbeitet i Artikel noch gat aus dem Bereich 2 und dies ist die Abfrage, wenn ich das zu toSql

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

jede mögliche Hilfe bitte

+1

try 'wo ('! =' 'Item_area',, 2)' –

+0

dank meera Tank immer noch die gleichen –

Antwort

1

wie diese versuchen:

$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

ich das tat und gat interner Server Fehler –

+1

Behoben, versuchen Sie es jetzt! – aaron0207

+0

es funktioniert dank mann –