2017-07-19 7 views
1

私はテーブルYをテーブルYに接続して、 を含んでいます。これをhasOneと関数を使用してテーブルZと内部結合(マッチング)したいとします。 CakePHPは自動的にCakephp 3.x hasOneはデフォルトの外部キーを挿入します

public function initialize(array $config) 
{ 
    $this->belongsTo('Y', [ 
     'bindingKey' => 'initialen', 
     'foreignKey' => 'initialen' 
    ]); 

    $this->hasOne('Z'); 
} 

さらにhasOneの通過、存在しないデフォルトの行に接続

public function search($c) 
{ 

    $query = $this->find('all')->contain('Y')->matching('Z', function ($q) use ($c) { 

     return $q->where(['Z.client_ID' => $c]); 
    }); 


    return $query; 


} 

私は取得していますエラーZ.search_idが存在しない場合は

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Z.search_id' in 'on clause'

答えて

0

[OK]を、私は自分自身が

$this->hasOne('Z',[ 
'foreignKey' => false 
]); 
0

、あなたがする必要はあり存在する他の外部キーを指定してください:

$this->hasOne('Z',[ 
    'foreignKey' => 'some_key' 
]); 

さらに詳しい情報:CakePHP hasOne association

+0

正しい解決策を見つけましたが、この意志よりも、クエリにも追加しました。私は欲しくない。 searches' INNERが '' archief_Z' Z' ON( 'Z'.'client_ID' = 81 と' searches'.'IDを登録しよう '' archief'のは、私が から 'TEAM_ID' としてのForeignKeyを指定しましょう'=(' Z'.'team_ID') ) LEFT JOIN 'archief_Y''Y'''''''''''は'( '''''''') – Joost

関連する問題