mysql - Yii2 Wrong active record Query syntax in debug toolbar -
i made query active records , not work data query grid view empty. try manually, result ok. , found , found cause of problem, compare wrong sql query see code below.
active record query :
$query-> innerjoinwith(['askpos']) ->andwhere(['ask_policy.id'=>'ask_po.id_policy']) ->innerjoinwith(['client'])->andwhere(['id_client'=>yii::$app->user->identity->id_client])->all(); **in yii debug show me sql : ** `select `ask_policy`.* `ask_policy` inner join `ask_po` on `ask_policy`.`id` = `ask_po`.`id_policy` inner join `ask_client` on `ask_policy`.`id_client` = `ask_client`.`id` (`ask_policy`.`id`='ask_po.id_policy') , (`id_client`=930);` above code not work. problem is
`ask_policy`.`id`='ask_po.id_policy' **it should : **
select `ask_policy`.`policy_num`, `ask_po`.po_num, ask_client.insuranced_name `ask_policy` inner join `ask_po` on `ask_policy`.`id` = `ask_po`.`id_policy` inner join `ask_client` on `ask_policy`.`id_client` = `ask_client`.`id` (`ask_policy`.`id`=`ask_po`.`id_policy`) , (`id_client`=930); or active record query below :
$query->innerjoinwith(['client'])->where(['id_client'=>yii::$app->user->identity->id_client]) ->innerjoinwith(['askpos']) ->andwhere(['ask_policy.id'=>'id_policy'])->all(); in yii debug show me sql :
select `ask_policy`.* `ask_policy` inner join `ask_client` on `ask_policy`.`id_client` = `ask_client`.`id` inner join `ask_po` on `ask_policy`.`id` = `ask_po`.`id_policy` (`id_client`=930) , (`ask_policy`.`id`='ask_po.id_policy') **it should : **
select `ask_policy`.`policy_num`, `ask_po`.po_num, ask_client.insuranced_name `ask_policy` inner join `ask_client` on `ask_policy`.`id_client` = `ask_client`.`id` inner join `ask_po` on `ask_policy`.`id` = `ask_po`.`id_policy` (`id_client`=930) , (**`ask_policy`.`id`=`id_policy`**) why above code can different manual sql query? did make mistake in using it?
update query on andwhere condition. don't pass array here instead of pass string below.
$query-> innerjoinwith(['askpos']) ->andwhere("ask_policy.id = ask_po.id_policy") ->innerjoinwith(['client'])->andwhere(['id_client'=>yii::$app->user->identity->id_client])->all();
Comments
Post a Comment