2016-09-01 5 views
0

ユーザーがadminの場合はすべてのレコードを取得し、管理者でない場合はユーザーの投稿のみを返します。Laravel 5ユーザーがadminの場合はすべてのレコードを選択

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

編集:私はすでに

+0

ないで、現在のユーザーならば、メインwhere$query->whereを適用することですユーザーが管理者であるかどうか知っていますか?彼らは '名前'が '政治家 'として設定されているからですか? – James

+0

どのユーザーですか? あなたはログインしたユーザーを意味しますか? – Victor

+0

'$ enum'には何がありますか? – Victor

答えて

1

これは、認証と最も可能性の高い、user is not an admin部分を確認する方法はあなた次第です::ユーザー()が、ポイントは、あなたが唯一の管理者

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

このソリューションをどのように使用しますか? {'idUser'、 "="(idUser '、 "=" idUser ")}を使用すると、$ post = Post ::を試してみると、(function($ query)use {$ IdCurrentUser} { {/ * userが管理者でない* /){ $ query-> 、$ IdCurrentUse); } })> get(); 'しかしエラーが出る –

+1

if()条件を自分で指定する必要があります。 –

1
あなたはおそらく

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

のように、認証されたユーザーを返すようにしたい

その後、いない管理者場合whereを追加し、事前に

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

感謝を試してみてください。

また、簡単な名前の比較(これは適切な方法)ではなく、管理者の確認に実際の役割を使用する方法については、hereをチェックしてください。

+0

query verifieがadminの場合はtrue、そうでない場合はすべて1つのレコードを表示します。ユニークなクエリを使用してそれを行う –

+0

あなたは "投稿"について話しています。 私の場合、「posts」テーブルにユーザーID *と*の名前を格納することはほとんどありません。しかし、もしそうならば、それだけで、あなたはそれを行うことができます。 それ以外の場合は、2回クエリを実行するか、ユーザーテーブルをポストテーブルと結合する必要があります。これは、大量の行に対しては非常に非効率的です。 – Victor

+0

もう1つの方法で2つのクエリを作成する –

関連する問題