如果我employee_id
只有integer
(如1001
),我就会得到答案
示例代码如下,
$claimprocess = Employee::find()
->where("employee_id = '1004' and importcompany_id = 1")
->andwhere(" status != 'Deleted' and relationship = 'Self'")
->all();
如果我有employee_id
组合interger
和character
,我就无法得到答案(例如E1004
),
示例代码如下,
$claimprocess = Employee::find()
->where("employee_id = 'E1004' and importcompany_id = 1")
->andwhere(" status != 'Deleted' and relationship = 'Self'")
->all();
当我执行此代码时,会出现如下错误
异常(数据库异常)' yii \ db \ Exception'同 消息' SQLSTATE [42S22]:未找到列:1054 Champ ' E1004' inconnu dans where子句正在执行的SQL 是:SELECT * FROM
employee
WHERE(employee_id = E1004和 importcompany_id = 1)AND(状态!='已删除')'
更新:
实际上是从另一个变量获得该值(E1004),我使用变量而不是值,为了解目的,我在我的问题中使用了一个值
答案 0 :(得分:3)
您需要将employee_id
值(即E1004
)括在引号内,因为它包含字符串文字。所以你的查询看起来像
->where("employee_id = 'E1004' and importcompany_id = 1")
答案 1 :(得分:1)
SQL中的字符串文字用单引号('
)表示。如果没有它们,数据库会将E1004
解释为列名,并且查询失败,因为您的表没有这样的查询。
$claimprocess = Employee::find()
->where("employee_id = 'E1004' and importcompany_id = 1")
->andwhere(" status != 'Deleted' and relationship = 'Self'")
->all();
答案 2 :(得分:0)
您需要正确传递值,就像现在您没有正确传递值一样,因此Yii没有正确生成Sql查询。您可以将第二个参数传递给where子句
$claimprocess = Employee::find()
->where("employee_id = ':employee_id' and importcompany_id = 1" , array(':employee_id'=>'E1004'))
->andwhere(" status != 'Deleted' and relationship = 'Self'")
->all();