ホームページ >バックエンド開発 >PHPチュートリアル >laravel5.2テイクに関する質問
リーリー
上記のコードでは、各部屋の下の項目が空になっていますが、$query->take(12);
をコメントアウトすると、再び項目が表示されます。
上記のコードでは、各部屋の下の項目が空になっていますが、$query->take(12);
をコメントアウトすると、再び項目が表示されます。
そうですね...理由は実際には非常に簡単です。dd()
來看下其生成的 SQL
:
次のものが生成されます SQL
( ? 數量代表你的 Room
いくつかあります):
制限がデータ量を超えているため、take
、 limit
之類的限制,並不是對 每一筆
作限制,而是全部取得的關聯數據作限制,所以當你設置很小的數量時,會造成一部分的 Room
沒有 Item
,你可以把這個數字設的很大,例如 100000
,你就會發現 items
参加後、実際にデータがあることがわかります。
各トランザクションに関連するデータを制限する方法については、いくつかの情報を見つけましたが、現時点で最も信頼できる方法はありません。
雄弁な関係の調整 – 親ごとに N 個の関連モデルを取得する方法?
意味がわかりません $room=AppModelRoom::with('items')->take(12);
明らかに、一致するものはありませんでした。
すべては、関連付けられたモデル abstract public function addEagerConstraints(array $models)
メソッドを通じて実装されます。
その理由は、with
の関連データ テーブルのクエリによって提供されたデータが、取得したモデル データと一致しないため、クエリの結果が得られないことがわかります。