Für einen Webshop im einen Tisch zu erzeugen versuchen, die wie folgt aussieht:
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
Es gibt eine Tabelle für jede Kategorie ist, hat jede Kategorie sein eigene Größen (Tabelle 2 hat zB keine Größe M). Die Tabellen zeigen die Anzahl der bestellten Produkte pro Größe pro Produkt in jeder Kategorie an.
In der Anwendung gibt es ein Modell OrderProducts die Produkte in jedem Auftrag bestellt werden.
Ein OrderProduct hat eine ProductSize die eine Verknüpfungstabelle des Produkts
A ProductSize eine Größe hat Größen (die den Namen der Größe enthält)
der erste Schritt im tryin zu tun ist, erhalten alle Größen/Produkte für jede Kategorie wie:
$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);
}
Wenn ich meinen Code ausführen ich die folgende Fehlermeldung erhalten:
Indirect modification of overloaded property App\Category::$thesizes has no effect
Warum muss ich diesen Fehler und wie soll ich es lösen?
Hey tun, merke ich Sie schon accepte d dies aber ich notierte das [laravel] -Tag, also habe ich mein darauf basierendes Kollektions-Beispiel aktualisiert. –
Ich kam auch auf die vernünftigere Weise, die du gepostet hast, danke für die Erläuterung, die ich über die magischen Methoden nicht wusste, ich denke, dass ich etwas studieren muss, sobald ich nicht verstehe, wie/wann sie benutzt werden im Augenblick. Was das Sammlungsbeispiel betrifft, so denke ich, dass das sinnvolle Beispiel besser lesbar ist. Danke für deine gut erklärte Hilfe. –