2016-09-07 3 views
1

マイアカウントモデル:ID、名前CakePHPのダブルモデル協会

私のエントリーモデル:ID、account_id1、account_id2、量

だから私のエントリ勘定モデルに2つの外部キーを持っています。

私はこのようなモデルの関連付けを定義しました。

ここで、関連するアカウントの名前が「ab」で始まるエントリを見つける必要があります。私のエントリで

モデルファイル:

$this->find() 
    ->matching(
    'Acc1', 
    function ($q) { 
     return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']); 
    } 
); 

これは私に(account_id1による)関連アカウント名は「AB」

$this->find() 
    ->matching(
    'Acc1', 
    function ($q) { 
     return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']); 
    } 
) 
    ->matching(
    'Acc2', 
    function ($q) { 
     return $q->where(['LEFT(Acc2.name, 2) =' => 'ab']); 
    } 
); 

この場所の結果で始まるすべてのエントリを与えます両方ともアカウント名は「ab」で始まります。

Acc1.name またはのAcc2.nameが「ab」で始まるエントリを取得するにはどうすればよいですか?

答えて

0

->matchingを付けずにクエリを作成してみてください。結合を使用するか、Acc1Acc2を含めることができます。ケーキには、あなたを助けるいくつかのOR方法があります。

->where(['LEFT(Acc1.name, 2) =' => 'ab']) 
->orWhere(['LEFT(Acc2.name, 2) =' => 'ab']); 

http://book.cakephp.org/3.0/en/orm/query-builder.html#advanced-conditions