

タイトルの通りなのですが、CakePHP３で、Containに条件を含めて  
複数のテーブルの中から条件にあったものだけを取得したいです。

Model

[code]

     7class TableA extends Table{
     8
     9    public function initialize(array $config){
    10
    11        $this->hasMany('relation', [
    12                                     'className' => 'Relations',
    13                                     'foreignKey' => 'id',
    14                                     ]);
    15    }
    16}
    
[/code]

Controller

[code]

    public function getRelationController{
    
               //(省略)
    
     268        $table = TableRegistry::get('tableA');
     269        $relation = TableRegistry::get('relation');
     270
     271        $query = $table->find()
     272            ->where([
     273                     'location BETWEEN :min_lon AND :max_lon',
     275                     ])//条件１
     276            ->bind(':min_lon',$x2)
     277            ->bind(':max_lon',$x1)
     280            ->order(['tableA_id'=>'DESC'])
     281            ->contain(['relation'=> function ($q) use ($user_id) {
     282                        return $q
     283                        ->where(['relation.user_id' => $user_id]);//条件２
     284                    }])
     285            ->limit(10)->offset($offset);
    
                  //(省略)
    
[/code]

こうした場合最初の`where`でかけた条件に引っ掛かったものが取り出されてしまいます。  
本来は、  
【”tabelA”テーブルに対する条件１を満たし、かつ"relation"テーブルに対する条件２を満たす】  
といったものだけを１０件ずつ取得したいです。

なにかありましたら随時補足させていただきますので、よろしくお願い致します。


CC BY-SA 3.0
2016-02-05T04:49:59.733
21732
2016-02-05T04:49:59.733
12470
question
cakephp
CakePHP3でのContainに条件を含める