2016-09-01 19 views
0

如果用戶是管理員,我如何獲取所有記錄,如果不是,則管理員只返回用戶帖子。我已經嘗試Laravel 5如果用戶是管理員,請選擇所有記錄

Where('idUser',"=",$IdCurrentUser)->orWhere('Administrador','=','Administrador')->get(); 

在此先感謝

+0

如何當前用戶你知道用戶是否是管理員?是因爲他們的'name'設置爲'Administrador'? – James

+0

哪位用戶? 你的意思是登錄的用戶? – Victor

+0

'$ enum'是什麼? – Victor

回答

1

這取決於你如何檢查user is not an admin部分,最有可能與驗證::用戶(),但問題是你申請$query->where主要where內只如果不是管理員

->where(function($query) use ($IdCurrentUser) { 
    if (/* user is not an admin */) { 
     $query->where('idUser',"=",$IdCurrentUse); 
    } 
})->get(); 
+0

我如何使用這個解決方案?我嘗試了'$ post = Post :: Where(function($ query)use($ IdCurrentUser){if user ,$ IdCurrentUse); } }) - > get();'但是我得到一個錯誤 –

+1

你應該自己指定if()條件。 –

1

你可能想返回認證用戶,好像

$isAdmin = false; 
if (Auth::check()) 
{ 
    $user = Auth::user(); 
    if ($user->getName() == 'Administrador') 
    { 
    $isAdmin = true; 
    } 
} 

再加入where如果不是管理員:

if (!$isAdmin) 
{ 
    $postCollection->where('id', '=', $user->getId()); 
} 

編輯:

另請參閱here以瞭解如何使用實際角色進行管理員檢查,而不是簡單名稱比較(這是正確的方法)。

+0

我想要該查詢驗證是否爲admin等於true,然後顯示所有其他顯示其一條記錄。使用獨特的查詢來做到這一點 –

+0

你在談論「職位」。 對我來說,你不太可能在「posts」表中存儲用戶名和*名。但是,如果情況如此,那麼只有這樣才能做到。 否則需要查詢兩次,或者用post表加入users表,這對於很多行來說效率很低。 – Victor

+0

還有另外一種方法可以創建兩個查詢 –

相關問題