2016-08-16 9 views
0

からのみ希望firledsを選択します現時点では、私はすべての3つのテーブルのすべての利用可能なフィールドを提供するクエリを持っています。私は、今、私が<code>toppings_sizes</code>から一つだけのフィールドを選択します<code>sizes</code>と<code>toppings</code>の間に多くの関係に多くを持っていると、テーブルが<code>toppings_sizes</code></p> <p>命名された余分なフィールドが含まれていthrirdテーブルを持っているクエリ

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

debug(json_encode($rs, JSON_PRETTY_PRINT)); 

私はこれは私が一つの方法は、フィールドを指定する->selectを追加することであるだけで2つのフィールドSizes.nameToppingsSizes.price

答えて

0

を必要とすることができます。このコードを使用することにより

$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]); 

あなたが希望得ることができますテーブルのフィールド。

0

結果データに必要なモデルエンティティcontain()メソッド配列にリレーションシップモデル名を渡す必要があります。

$rs = $this->Toppings 
    ->find() 
    ->select(['Sizes.name', 'ToppingsSizes.price']) 
    ->contain(['Sizes','ToppingsSizes']) 
    ->where(['Toppings.category_id' => $categoryId]); 
関連する問題

 関連する問題