【问题标题】:Yii2 Query with LikeYii2 用 Like 查询
【发布时间】:2018-10-05 05:27:05
【问题描述】:

您好,我需要在 Yii2 中构建一个有 3 个赞的查询。这是一个表单搜索。

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”需要两个操作数。

【问题讨论】:

  • 到底有什么问题?请发布更多详细信息,运行它时会发生什么以及您期望结果是什么?
  • 这是错误 Invalid Argument – yii\base\InvalidArgumentException Operator 'LIKE' 需要两个操作数。” ...我需要使用 SearchForm 的参数过滤游览。
  • 在问题本身中添加错误消息(为了可见性)

标签: php sql yii2


【解决方案1】:

正如您的错误消息提示,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']

【讨论】:

  • 感谢您的回答,您的查询没问题,但结果与预期不同。
  • @AlejandroDuque 我在我的回答中添加了一条注释,确保您通过 POST 发送的内容与您从 Yii::$app->request-> 获得的格式完全匹配发布()
  • 我要去检查数据库字段,我认为你的查询没问题,谢谢你的帮助。
猜你喜欢
  • 2021-05-04
  • 1970-01-01
  • 2021-02-20
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 2012-09-24
相关资源
最近更新 更多