我想從我的Laravel 5.4應用程序中的多對多關係獲取字段值。在Laravel 5應用程序中獲取多對多關係的透視字段值
我已經按照我的MySQL數據庫表:
products
+ id
+ name
+ ...
nutrients
+ id
+ name
+ ...
products_nutrients
+ product_id
+ nutrient_id
+ value
產品和營養素表都有它的等效雄辯模型(產品和營養)正確地工作多對多的關係他們之間的IP。
我需要列出具有某些營養素值的所有產品。我知道想要的營養素,所以我可以在查詢中設置它。 結果應該像集合/數組以下元素組成:
- product name
- value of nutrient id 1 for product
- value of nutrient id 2 for product
- value of nutrient id 3 for product
我怎樣才能弄清楚用雄辯的查詢生成器或在原始的SQL查詢最壞的情況下?我想避免foreach循環的解決方案。
我試圖實現它,但沒有成功。我會很高興有任何幫助。謝謝
我知道這種方式來實現它,但它不是最佳。我想通過使用一個查詢來解決它,而不是foreach循環。 – zyx4sdk
@ zyx4sdk我敢肯定,在這種情況下,您已經擁有'Product'實例,因爲您正在獲取產品名稱,所以此代碼只會創建一個查詢。此foreach循環不會在此代碼中創建N + 1個查詢。 –
@AlexeyMezenin如果您指定加載產品的每個子代,這將僅創建一個查詢。要做到這一點,你可以使用''' - > load('nutrients')'''。查看更多https://laravel.com/docs/5.4/eloquent-relationships#eager-loading – Treast