web-dev-qa-db-ja.com

Laravel Eloquent with and find

なぜこれが機能しないのですか?

Article::with('category')->find($ids)

配列から文字列への変換例外が発生しました。

しかし、クエリを次のような2つの部分に分割すると:

$articles = Article::with('category')

そして

$articles = $articles->find($ids)

私は例外を受け取らず、結果は正しいです。

33
Marco

後世のためだけに...他の方法でこれを行うことができます:

Article::with('category')->whereIn('id', $ids)->get();

これは、データベースマネージャーにクエリを残すため、より良い(パフォーマンスが高い)はずです。

30
dani24

試してください:

Article::with('category')->get()->find($ids);

Find()を呼び出すには、まず記事を入手する必要があります。

警告:これは、データベースからすべての記事を取得し、それらをすべてメモリにロードし、すべてのデータから1つだけを選択して返します。これはおそらく、この問題をどのように処理するかではありません。

16
Half Crazed

これにより、Laravel 4のIDの配列に基づいた結果が得られます。

Article::whereIn('id', $ids)->with('category')->get();
5
Adam