【问题标题】:Query : equals values are not equals查询:等于值不等于
【发布时间】:2020-05-29 10:01:25
【问题描述】:

欢迎

我正在使用 Laravel 6.6.2,我想执行我的查询。如果我在 MySql-workbench 中执行我的查询(使用 sql fromat),那将起作用。 我有以下问题,2个等于值不相等。

$myId = DB::table("masterTable")
    ->select("ass_group_user.group_pgr_id","group.pgr_id")
    ->leftJoin("user","user.status_flag","=","gen_client.status_flag")
    ->leftJoin("group","group.pgr_foreign_key","=","gen_client.id")
    ->leftJoin("ass_group_user","ass_group_user.user_id","=","user._id")
    ->Where("user.name","=","myName")
    ->Where("ass_group_user.group_pgr_id","=","group.pgr_id")
->get();

返回空数组。
如果我真的写它而不是 "Where("ass_group_user.group_pgr_id","=","group.pgr_id")"

->Where("ass_group_user.group_pgr_id","=",6)
->Where("group.pgr_id","=",6)

返回我想要的。
他们都是 Int.

谢谢

【问题讨论】:

  • 两个字段是否具有相同的数据类型?究竟是什么?
  • 它们都是具有相同参数的 Int(10)。如果我在有效的 Workbench 或 phpmyadmin 中执行查询
  • 你能验证它实际上是同一个查询吗?即 ->toSql() 而不是 ->get() 与您在工作台中运行的查询相同吗?

标签: mysql sql laravel laravel-6 laravel-6.2


【解决方案1】:

评论太长了。

如果两列都是整数,我看不出这是怎么发生的。但是,如果它们是字符串,您可能会遇到这样的情况:

'06' = 6
'006' = 6

但是:

'06' <> '006'

那是因为在数字和字符串的混合比较中,字符串被转换为数字。

【讨论】:

  • 它们都是具有相同参数的 Int(10)。如果我在有效的 Workbench 或 phpmyadmin 中执行查询
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 2018-08-07
  • 2013-10-30
  • 1970-01-01
  • 2020-12-18
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多