在用laravel開發時,要關聯模型查詢和with預載入做統計。因為是統計所以並沒有全部查出所有欄位的必要。故我在with中用閉包 $query->select('欄位名’');但是在查詢後結果是null。也就是說關聯不上。
為什麼呢?我終於在網上找到答案:不管一對一,一對多等等,laravel的關聯查詢的原理簡單來說就是先分別查出模型自身的資料和關聯模型的資料,在根據你定義的主鍵id和外來鍵_id進行關聯起來組成查詢結果。所以呢,模型自身的資料在select時的必需欄位必須要有定義關聯是的主鍵id(或自定義的關聯欄位),同樣,關聯模型的資料在select時的必需欄位也要有定義關聯時的外來鍵_id(或自定義的關聯欄位).
在with中用閉包時 $query->select('自已想要的欄位名'. '定義的關聯欄位_id');模型自身在->select('至少要有關聯的欄位id');
本作品採用《CC 協議》,轉載必須註明作者和本文連結