嗨,我需要在Yii2中建立一个具有3个赞的查询。这是一个formsearch。
Select vchName, vchType, vchEmail from Tours where vchName like _Post('vchname') and vchType like _Post('vchType') and vchEmail like _Post('vchEmail')
我尝试这样做,但这是错误的。请帮助。
$query->where(['like','vchName',Yii::$app->request->post('vchName')])->
andWhere(['like','vchJourney',Yii::$app->request->post('vchJourney')])->
andWhere(['like','vchTypesOfTours',Yii::$app->request->post('vchTypesOfTours')]);
这是错误:
.Invalid Argument – yii \ base \ InvalidArgumentException 运算符“ LIKE”需要两个操作数。
答案 0 :(得分:0)
根据错误消息提示,Operator 'LIKE' requires two operands.
我假设您遇到代码在非POST请求上运行的情况,或者只是没有提供运行查询所需的所有POST参数。
我建议使用方法andFilterWhere而不是andWhere。
$query
->andFilterWhere(['like','vchName',Yii::$app->request->post('vchName')])
->andFilterWhere(['like','vchJourney',Yii::$app->request->post('vchJourney')])
->andFilterWhere(['like','vchTypesOfTours',Yii::$app->request->post('vchTypesOfTours')]);
请注意,如果提供的任何参数为空(例如Yii::$app->request->post('vchName')
),则条件本身将被跳过。
验证您正在使用/发布这些变量是否正确。特别是因为默认符号应该类似于Yii::$app->request->post('SearchFormName')['vchName']