カスタムメイドの関数を使用してデータベースから特定のデータを検索する際に問題が発生しました。
TableA(id、....)とTableB(id、tablea_id、userid、...)があります
モデルTableAには、次の関係コードがあります。
'relation_name' => array(self :: HAS_MANY、'TableB'、'tablea_id')
TableAをクエリするカスタムメイドの関数を作成し、TableBデータの特定のユーザーIDを含むTableAに存在する結果を取得する必要があります。また、TableBはtablea_idフィールドのTableAに関連付けられています。
このコードを使用して、問題の解決策を見つけました。
public function findABCD($user_id)
{
$criteria=new CDbCriteria;
$criteria->join = 'left join TableB on t.id=TableB.tablea_id';
$criteria->condition = "TableB.userid = ".$user_id;
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
これは機能しますが、以前に作成した関係を利用していません。私が使用する必要があるもののアイデアはありますか?
多くのことをテストしましたが、SQLエラーが発生します。
これは私が以前にテストしたものです(基準JoinとConditionの代わりに):
$criteria->with=array('relation_name');
$criteria->condition = "relation_name.userid= ".$user_id;
//this does not work as well
//$criteria->condition = "TableB.userid= ".$user_id;
エラーは次のとおりです。
SQL: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'relation_name.userid' in 'where clause'.
何か案は?