對於網上商店我嘗試生成一個表,看起來像:
Tablename: category 1
productname S M L X total
name1 1 0 1 3 5
name2 0 1 0 2 3
Tablename: category 2
productname S L X total
name5 1 1 3 5
name8 0 0 2 2
沒有爲每個類別表,每個類別都有他自己的大小(表2沒有大小M例如)。 這些表格顯示每個類別中每個產品的每個尺寸的已訂購產品數量。
在應用程序中有一個模型OrderProducts這是訂購產品在每個訂單。
一種OrderProduct具有ProductSize這是產品的結表大小
甲ProductSize具有尺寸(其中包含尺寸的名稱)
第一step im試着做的是得到每個類別的所有尺寸/產品,例如:
$order = Order::findOrFail($id);
$products = OrderProduct::where('orders_id',$id)->get();
$categories = Category::all();
//get sizes and products per category
foreach($categories as $cat)
{
$cat->thesizes= array();
$cat->theprodcts= array();
foreach($products as $product)
{
if($product->productSize->product->category_id == $cat->id)
{
array_push($cat->thesizes,$product->productSize);
array_push($cat->theprodcts,$product);
}
}
//make sure all values are unique (no dubbele sizes).
$cat->theSizes = array_unique($cat->theSizes);
$cat->theProducts = array_unique($cat->theProducts);
}
當我運行我的代碼,我得到以下錯誤:
Indirect modification of overloaded property App\Category::$thesizes has no effect
爲什麼我收到這個錯誤,我應該怎麼解決呢?
嘿做這樣的事,我知道你已經accepte這個,但我注意到了[laravel]標籤,所以我更新了我的集合示例。 –
我也想出了你發佈的更明智的方式,感謝我不知道有關魔術方法的完美情況,我想我不得不做一些關於它們的研究,因爲我不明白它們如何/何時被使用在這一刻。至於收藏的例子,我認爲這個明智的例子更具可讀性。感謝您解釋良好的幫助。 –