【问题标题】:Laravel eloquent update join with DB::raw() unknown columnLaravel 雄辩更新加入 DB::raw() 未知列
【发布时间】:2023-02-11 23:36:43
【问题描述】:

我正在尝试运行此更新语句,但出现此错误:

SQLSTATE[HY000]: General error: 1 no such column: table2.id

DB::table('table1')
            ->join('table2', 'table1.row_hash', '=', 'table2.row_hash')
            ->where('table1.some_column', '=', 0)
            ->whereNull('table1.reference_no')
            ->update([
                'table1.column_to_update' => 1,
                'table1.column_to_update_2' => 1,
                'table1.column_to_update_3' => 1,
                'table1.reference_no' => DB::raw('table2.id') <--comment this line out and it works.
            ]);

如果我从更新语句中注释掉该列,它就会起作用。我尝试在 DB::raw() 语句中使用引号和反引号的各种组合,但仍然出现相同的错误。 This post 似乎表明我这样做是正确的,但它不合作。

如何将table1.reference_no的值更新为table2.id的值?我希望在一个雄辩的查询中完成此操作,因为它是一个非常基本的 SQL 语句。不幸的是,我也尝试过只使用原始 SQL 语句,尽管在我的 mysql 客户端中直接运行它时它会产生其他错误。对于它应该多么简单来说,这完全花费了太多时间。

【问题讨论】:

  • 您正在混淆层后面执行 MySQL 更新。如果可以,请尝试将当前(失败的)更新查询打印到日志文件中,并查看语法问题是什么。
  • 您是想在 whereNull 调用中加入反引号吗?那是执行运算符,所以可能返回 null。
  • 而且,这可能是显而易见的,但是 table2 / quickbooks_transactions 是否有 id 列?
  • @benJ - 抱歉,反引号是无意的,这不是导致错误的原因。我更新了帖子。 table2 确实有一个 ID 列..

标签: php mysql laravel eloquent laravel-9


【解决方案1】:

只是偶然发现了这个。

将值放在反引号中是可行的。像这样:

'table1.reference_no' =&gt; DB::raw('`table2`.`id`')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2020-05-30
    • 2020-02-14
    • 2017-04-28
    • 2016-07-29
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多