2016-08-16 1 views
0

Ich habe eine viele zu viele Beziehung zwischen sizes und toppings und und haben eine thrird Tabelle, die zusätzliche Felder enthält die Tabelle toppings_sizesAuswahl nur gewünschte firleds aus Abfrage

Nun gestattet Ich möchte von toppings_sizes nur ein Feld aus, Im Moment habe ich eine Abfrage, die alle verfügbaren Felder in allen 3 Tabellen liefert.

$rs = $this->Toppings 
    ->find() 
    ->contain(['Sizes']) 
    ->where(['category_id' => $categoryId]); 

debug(json_encode($rs, JSON_PRETTY_PRINT)); 

ich das kann ich brauche nur zwei Felder Sizes.name und ToppingsSizes.price

Antwort

0

Ein Weg durch ist ->select Hinzufügen von Feldern zu spezifizieren:

$rs = $this->Toppings 
    ->find() 
    ->select(['Sizes.name', 'ToppingsSizes.price']) 
    ->contain(['Sizes']) 
    ->where(['category_id' => $categoryId]); 
0
$rs = $this->Toppings 
    ->find() 
    ->contain([ 
      'Sizes' => function ($q) { 
       return $q 
        ->select(['name']); 

      }, 
      'ToppingsSizes' => function ($q) { 
       return $q 
        ->select(['price']); 
      } 
     ]); 
    ->where(['category_id' => $categoryId]); 

Durch diesen Code können Sie in gewünschte erhalten Felder aus der Tabelle.

0

Sie müssen die Beziehungsmodellnamen in das contain() Methodenarray eingeben, welches Modellelement Sie in den Ergebnisdaten benötigen.

$rs = $this->Toppings 
    ->find() 
    ->select(['Sizes.name', 'ToppingsSizes.price']) 
    ->contain(['Sizes','ToppingsSizes']) 
    ->where(['Toppings.category_id' => $categoryId]); 
Verwandte Themen