2016-05-23 18 views
0

私のデータベースの一部のように見えるdatabase partCakephp 3:belongsToManyには条件が含まれていますか?

カテゴリはツリーの動作を使用します。

現在のカテゴリのメーカー(プロデューサ)製品を取得するにはどうすればよいですか? 私は含むと一致してみましたが、重複したデータやプロデューサーの名前を関連商品なしで受け取りました。

EDIT:

$query = $this->Producers->find()->matching('Products.Categories', 
    function ($q) { 
     return $q->where(['Categories.id' => 18]); 
    } 
); 

結果:

Producent: Canon 
------------------------------------------- 
| ID | Name  | Barcode    | 
------------------------------------------- 
| 1 | EOS 1000D |      | 
------------------------------------------- 
| 18 | Camera  |      | 
------------------------------------------- 
| 23 | 18   |      | 
------------------------------------------- 

最初の行(ID = 1)それは私が必要なものです。 今度は結果から削除する必要があります: 2行目(ID = 18)これはテーブルカテゴリのカテゴリIDです。 第3列(id = 23) - Products_Categoriesテーブル。

+0

これまでに何を試みましたか? – arilia

+0

私は現在のカテゴリーのIEの生産者製品を表示する必要があります。 カテゴリ:カメラ プロデューサーキヤノン: - EOS 1000D - のPowerShot プロデューサー:ニコン - 製品D5 - 製品:D700 –

+0

求めていた何@arilia forは失敗した試行のコード例です(理想的には、まだ関連付けられているプロダクトを持たないプロデューサが存在するかどうかなどの追加情報があります)。一般的にマッチングは行く方法です。 – ndm

答えて

1

完了。作業クエリがあります:

$query = $this->Producers->find() 
     ->select(['Producers.id','Producers.name', 'Products.id', 'Products.name']) 
     ->matching(
      'Products.Categories', function ($q) use ($categoryId){ 
       return $q->where(['Categories.id' => $categoryId]); 
      } 
     ); 
関連する問題