2016-05-24 5 views
0

私はテーブルAをテーブルBと多対多に関連づけています。そして、私は与えられたAエンティティでBにいくつの関連する行があるか知りたいと思います。 SQLでは、このようなものになるだろう:CakePHPのBelongToMany関係3.2

SELECT COUNT(*) FROM AB WHERE A_id=1; 
私は、カウントを取得し、仮想フィールドでのモデルでそれを配置する必要がありますが、私はモデルを使用する方法を見つけるdidn'tと思っ

関連するB行を取得します。

私は

$this->contain(['B'])->count() 

で試してみました。しかし「を含む」は定義されていないので、それは動作しませんでした。だから、どのようにカウントを取得する必要がありますか?

+1

の可能性のある重複した[CakePHPの3:BelongsToManyとCounterCache](http://stackoverflow.com/questions/32948513/cakephp-3-countercache-with-belongstomany) – Salines

+0

@Salinesまあ、作るようです私は何を望んでいたのですか?関係テーブルにカウントを保存する理由は何ですか? –

+0

あなたの関係CounterCacheの動作を持つモデルは、独自のテーブルのストアカウントではなく、あなたのケースではAテーブルに関連しています。 – Salines

答えて

0

あなたのモデルの両方にアソシエーションを入れて、メソッドを初期化し、$ thisのcontains()を呼び出さないようにしてください。

$query = $this->A->find(); 

numberOfRecords = $query->contain(['B'])->count; 
+0

"メンバー関数find()on null"を呼び出します。 Entityは自分自身を含むTableコレクションのインスタンスを持っていないようです。 –

+0

モデルinitを指定してください。メソッドとAのコントローラーメソッドを呼び出しています。 –

関連する問題