產品表(product)
套餐表(package)
套餐資訊表(package_data)。
id(自增id)
name(名稱)
...
id(自增id)
title(套餐名稱)
....
id(自增id)
product_id(產品id)
package-id(套件id)
product_num(產品數量)
...
一個套餐中有多個產品,套餐表和套餐資訊表本來可以弄在一個表中,但是為了減少冗餘數據,所以對套餐表進行了簡單的垂直分錶。
在上述情況下,我想知道套餐A中含有多少個產品A。那麼模型中的關聯關係該怎麼定義呢?
在上述情況下,我想知道套餐A和套餐B總共使用了多少個產品A,產品B,etc...、那麼該如何操作?
ps:上述問題已經翻過官方文檔,但是我智商太低,導致理解的不清晰,所以特來請教各位。
產品表(product)
套餐表(package)
套餐資訊表(package_data)。
id(自增id)
name(名稱)
...
id(自增id)
title(套餐名稱)
....
id(自增id)
product_id(產品id)
package-id(套件id)
product_num(產品數量)
...
一個套餐中有多個產品,套餐表和套餐資訊表本來可以弄在一個表中,但是為了減少冗餘數據,所以對套餐表進行了簡單的垂直分錶。
在上述情況下,我想知道套餐A中含有多少個產品A。那麼模型中的關聯關係該怎麼定義呢?
在上述情況下,我想知道套餐A和套餐B總共使用了多少個產品A,產品B,etc...、那麼該如何操作?
ps:上述問題已經翻過官方文檔,但是我智商太低,導致理解的不清晰,所以特來請教各位。
咳咳~,最後還是在文檔中找到答案。連結在此 。請自行搜尋"嵌套的渴求式載入"部分查看。
說下具體過程:
<code class="php">public function hasManyData() { return $this->hasMany(PackageData::class, 'package_id', 'id'); }</code>
<code class="php">public function BelongsToProduct() { return $this->belongsTo(Product::class, 'product_id', 'id'); }</code>
<code class="php">$packageList = Package::with('hasManyData', 'package_data.BelongsToProduct')->get();</code>
大功告成!
ps:某同事給的方法是大概是這樣的,以下為偽代碼:
<code class="php">$packageList = Package::with('hasManyData')->get(); foreach( $packageList as $key => $val ) { ... $productList = PackageData::with('BelongsToProduct')->where(...)->get(); ... }</code>
我覺得性能渣的一逼~,不想再研究啦!腦袋有點熱,所以寫的有點亂,不對的地方還請斧正。謝謝圍觀過這個問題的大佬們~