私はララキャストの@Jeffrey_wayシリーズと一緒に働いています 多対多の関係(タグ付き)
以下は、私がCMDでLaravel Tinkerを使用して書いたコードです:
コードの最後の行を実行した後($article->tags()->toArray();
私のコードではすべて問題ないようですが、それでも次のエラーが発生します。
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::toArray()'
どんな助けでも大歓迎です:)
リレーショナルデータを実際に「取得」したい場合は、tags
の周りに括弧を付けないでください。これは問題なく機能します。
$article->tags->toArray();
そのコレクションに「クエリ」する必要がある場合は、括弧を付けます(例:同期、保存、添付)。
参照: https://laravel.com/docs/5.1/eloquent-relationships#many-to-many
代わりにこれを試してください:
_$article->tags()->all()->toArray();
_
tags()
の基礎となるのは、おそらくまだ実行されていないクエリを表す_Query\Builder
_オブジェクトです。代わりに、実行されたクエリであるCollectionオブジェクトが必要であり、その上でtoArray()
を呼び出します。 ->all()
は、実際にクエリを実行することにより、クエリビルダーをコレクションに変換する呼び出しの1つです。
同じ問題があり、get()
を追加して解決しました
例えば:
$article->tags()->get()->toArray();
これが誰かに役立つことを願っています:)