2016-06-20 18 views

答えて

3

->where()を使用しているときにコレクションを構築していますが、->first()はモデルを返します。モデルを返すように説得力のために

、あなたはしかしこれは、コレクションを返す->get()

を追加することで、クエリを実行するように依頼する必要があります。あなたはコメントを->first()

User::where('id', 1)->first()->is('admin'); 

Editを使用してこの問題を解決することができます

はこれを行うにしてください、しかし、上記のコードは動作するはずです。

User; 

そして、あなたはそれを取得する:あなたの一番上の例では

$user = User::where('id', 1)->first(); 
$isAdmin = $user->is('admin'); 
+0

は今、私はエラーを取得する: 'BadMethodCallExceptionメッセージで「メソッドがある – Rudolph

+0

をexist.''しませんが、ユーザモデルに' is'機能を持っていますか?コードを正確にコピーしてください。 –

+0

私のUserモデルの様子は次のとおりです - https://github.com/caffeinated/shinobi/wiki/Usage – Rudolph

0

あなたが欲しいものを定義

first(); 

をあなたの一番下の例では、あなたも、あなたが望むものを定義します。

ただし、検索しないそれはどこにでもあります。チェックを行う結果がないので、まだ->is('admin')はできません。

User::where('id', 1)->first(); // One result 
User::where('id', 1)->get(); // Collection of results 
1

このユーザー::最初の()戻りUserクラスのオブジェクト

あなたが一致した最初の1または一致するすべてのものとのコレクションを取得することができます。

User :: where( 'id'、1)の雄弁なクエリオブジェクトを返します。

その理由では動作しません。

User :: where( 'id'、1) - > get();は結果行の配列を返します。しかしこれもis()を呼び出すようには機能しません。

-1

他の回答に記載されているように、where()はクエリビルダーを返し、where() - > get()はCollectionを返します。コレクションから呼び出されたrirst()を返すことができます。

$user = User::where('id', 1)->get()->first(); 
$isAdmin = $user->is('admin'); 
関連する問題