У меня есть 3 таблицы:Yii CDbCriteria комплекс Регистрация запроса
1) банк 2) bank_details 3) bank_bank_details
связь между ними:
банк модель:
public function relations() {
return array(
'bankBankDetails' => array(self::HAS_MANY, 'BankBankDetails', 'bank_id'),
);
}
bank_details модель:
public function relations() {
return array(
'bankBankDetails' => array(self::HAS_MANY, 'BankBankDetails', 'bank_details_id'),
);
}
bank_bank_details модель:
public function relations()
{
return array(
'bank' => array(self::BELONGS_TO, 'Bank', 'bank_id'),
'bankDetails' => array(self::BELONGS_TO, 'BankDetails', 'bank_details_id'),
);
}
Я хочу получать банковские реквизиты, как BANK_NAME, IFSC и т.д. Информация в виде админки bank_details модели.
нормальный SQL-запрос я генерироваться, который отлично работает:
SELECT b.name
FROM bank b
LEFT JOIN bank_bank_details bbd ON bbd.bank_id = b.bank_id
LEFT JOIN bank_details bd ON bd.bank_details_id = bbd.bank_details_id
WHERE bd.bank_details_id = bbd.bank_details_id
LIMIT 0 , 30
Теперь я просто хочет интегрировать это с Yii CDbCriteria, но он не работает для меня. Пожалуйста, проверьте код ниже:
public function search() {
$criteria = new CDbCriteria;
// select b.name
// from bank b
// left join bank_bank_details bbd
// on bbd.bank_id = b.bank_id
// left join bank_details bd on bd.bank_details_id = bbd.bank_details_id
// WHERE bd.bank_details_id = bbd . bank_details_id;
$criteria->compare('bank_details_id', $this->bank_details_id);
$criteria->compare('first_holder_name', $this->first_holder_name, true);
$criteria->compare('nominee1', $this->nominee1, true);
$criteria->select = 'b.name';
$criteria->join = 'LEFT JOIN bank_bank_details bbd ON bbd.bank_id = b.bank_id ';
$criteria->join .= 'LEFT JOIN bank_details bd ON bd.bank_details_id = bbd.bank_details_id';
$criteria->condition = 'bd.bank_details_id = bbd.bank_details_id';
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => 10,
),
));
}
Ошибка: Ошибка 500 Найдено CDbCommand не удалось выполнить SQL заявление: SQLSTATE [42S22]: Column не найдено: 1054 Неизвестный столбец 'b.bank_id' в " по статье «
Любая помощь будет оценена по достоинству.
Спасибо. На самом деле у меня есть выбранное имя, потому что я хочу только отображать имя банка в виде сетки администратора, а не идентификатор. Также я попробовал и синтаксис, но не работал. – Sky
, тогда вы должны скрыть идентификатор из сетки, а не из SQL-запроса @Ultimate – coolguy
Хорошо. Но условие также не работает. Он показывает мне ту же ошибку – Sky