2017-07-27 93 views
0

我有三個模型加入。僅當inventory.status爲1(即有效)時,我需要獲得workspace_members表格詳細信息。 我怎樣才能用尖銳的口才寫出這個條件?以下是我的查詢。提前致謝。Laravel基於條件的sql查詢

$data['inventories'] = Inventory:: 
    Join('category_info','inventory.category_id','=','category_info.category_id') 
    ->leftJoin('workspace_member_inventory', 'inventory.inventory_id', '=', 'workspace_member_inventory.inventory_id') 
    ->leftJoin('workspace_members','workspace_member_inventory.member_id','=','workspace_members.member_id') 
    ->where('inventory.workspace_id', '=', $workspace_id) 
    ->select('inventory.*', 'workspace_member_inventory.member_id','workspace_members.*','category_info.category_name', 'inventory.status as status') 
    ->get() 
    ->toArray(); 

回答

0

我不知道如果我理解,但我認爲你正在尋找Laravel Query Scopes

寫範圍上的庫存模型:

public function scopeIsActive($query,$status = null){ 
    if(!is_null($status)){ 
     if($status == 1){ 
      return $query->leftJoin('workspace_members','workspace_member_inventory.member_id','=','workspace_members.member_id')->where('inventory.status',1); 
     }else{ 
     return $query->where('inventory.status',0); 
     } 
    }else{ 
     return $query; 
    } 
} 

然後將其添加到您的查詢:

$data['inventories'] = Inventory:: 
    Join('category_info','inventory.category_id','=','category_info.category_id') 
    ->leftJoin('workspace_member_inventory', 'inventory.inventory_id', '=', 'workspace_member_inventory.inventory_id') 
    ->where('inventory.workspace_id', '=', $workspace_id) 
    ->isActive(1) 
    ->select('inventory.*', 'workspace_member_inventory.member_id','workspace_members.*','category_info.category_name', 'inventory.status as status') 
    ->get()->toArray();