1

L3 を使用すると、次のように動作します。

$r = Site::with('services')->get()

それはまさに私が期待するものを返します。サービス関係がすべてきちんと設定Siteされたオブジェクトの配列。

ただし、代わりに次のもののみを使用する場合:

$r = Site::with('services')->first()

また

$r = Site::with('services')->all()

サイト オブジェクトの関係は完全に空です。

それは私にはバグのように感じますが、私がやろうとしていることには何か問題がありますか? 現時点ではfirst()、代わりに使用するのと同じ効果を得るにget()は、返された配列から最初の要素を取得する必要があります。

4

1 に答える 1

2

まず第一に、使用は期待どおりに機能する->first() はずです。もう一度試してみてください。私は持っていますが、うまくいきます。うまくいかない場合は、バージョンを確認してください。私のは3.2.10です。

->all()そのように動作するはずはありません。単純なショートカットです。ドキュメントは、テーブル全体を取得するには静的 allメソッドを使用すると述べています。これは静的メソッドであり、オブジェクト コンテキストで使用していることに注意してください。とにかく、それを忘れて を使用できます->get()。それの何が問題なのですか?

ソースコードを見ると、次のようになりlaravel/database/eloquent/model.phpます。

public static function all()
{
    return with(new static)->query()->get();
}

ご覧のとおり、この関数は新しい を作成し、Modelすべての行を取得します。

于 2013-01-03T11:09:38.260 に答える