2016-06-14 8 views
5

は、私が使用してCMDに書かれているコードですLaravelティンカー:コードの最後の行を実行した後BadMethodCallException「クエリービルダー未定義のメソッドを照らし Databaseへの呼び出し::のtoArray()」

$article->tags()->toArray();

すべてがOKのwiのようですが、私のコード番目が、それでも私は、エラー、次のGET:

BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::toArray()' 

任意のヘルプははるかに高く評価されるだろう:)

答えて

4

実際にリレーショナルデータを取得したい場合は、括弧を付けてくださいtags。これはうまく動作します:

$article->tags->toArray(); 

あなたはそのコレクション(例同期、添付し、保存します。)に「クエリ」する必要がある場合、あなたは括弧を置きます。

参考:https://laravel.com/docs/5.1/eloquent-relationships#many-to-many

+0

ありがとうYigit私は自分のダムの頭からカッコを追加していました:pトレーニングビデオにはありませんでしたが – Hazmat

+0

よろしくお願いします。 Laravelと一緒に楽しく過ごせます:) – YigitOzkavci

1

を代わりにこれを試してみてください:

$article->tags()->all()->toArray(); 

tags()の基礎となることはおそらく表しQuery\Builderオブジェクトですまだ実行されていないクエリ。その代わりに、実行されたクエリであるCollectionオブジェクトが必要です(toArray()を呼び出す)。 ->all()は、実際にクエリを実行してクエリビルダをコレクションに変換する呼び出しの1つです。

+0

は今、私はこのエラーを取得する: 'メッセージとBadMethodCallExceptionが 'クエリー\ビルダー\未定義のメソッドを照らし\ Databaseへの呼び出し::、すべての()'' – Hazmat

+0

OKは、(取得してみてください)の代わりに、すべての() 。それはうまくいくはずです。 – delatbabel

+0

Laravelのバージョンによって、all()はコレクションまたは配列を返すことがあります。配列を返す場合、 - > toArray()ビットはまったく必要ありません。 – delatbabel

関連する問題