2016-09-01 2 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 часть, скорее всего, с Auth :: пользователя(), но дело в том, что вы применяете $query->where внутри основного where только если текущий пользователь в не админ

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

Как я использую это решение? i try '$ post = Post :: Where (функция ($ query) use ($ IdCurrentUser) { if (/ * пользователь не является администратором * /) { $ query-> где ('idUser'," = " , $ 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()); 
} 

EDIT:

Также проверьте here как использовать фактические роли для проверки администратора вместо простого сравнения имен (что является правильным способом для перехода).

+0

Я хочу в запрос verifie, если admin равен true, показывает, что все остальные показывают свои записи. Использование уникального запроса для этого –

+0

Вы говорите о «сообщениях». Для меня маловероятно, что вы сохраняете имена пользователей * и * в таблице «posts». Если это так, то тогда - и только тогда - вы могли бы это сделать. В противном случае вам нужно запросить два раза или присоединиться к таблице пользователей с таблицей сообщений, что довольно неэффективно для большого количества строк. – Victor

+0

Существует другой способ, чтобы создать два запроса –

Смежные вопросы