【问题标题】:I have a problem with my laravel query builder我的 laravel 查询生成器有问题
【发布时间】:2021-08-11 19:30:12
【问题描述】:

我使用 laravel 作为我的 web 项目,我在更新数据库时遇到了问题。

发布数据后,我的邮递员收到一条错误消息。这是消息。

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: update `data_transaksis` set `jumlah_transaksi` = 10000, `info` = Transaksi 2 Mysql Update, `data_transaksis`.`updated_at` = 2021-05-23 03:59:54 where `id` is null)

这是我更新数据库行的函数代码。

$dataTransaksi = DataTransaksi::where('transact_id', $request->transact_id)->first();
$dataTransaksi->jumlah_transaksi = $request->jumlah_transaksi;
$dataTransaksi->info = $request->info;
$dataTransaksi->save();

return response($dataTransaksi, 200)->header('Content-type', 'application/json');

我不知道我的代码发生了什么,我在查询生成器上搜索“transact_id”,但错误消息显示我搜索“id”。这很古怪。我的问题有什么解决方案吗?

编辑: 这是我的表结构。 https://imgur.com/gallery/s5Ltmek

【问题讨论】:

  • 您的数据库中有id 列吗?transact_id 的值是多少
  • 我的桌子上没有名为“id”的列。我的“data_transaksi”表的主键是“transact_id”。就是这样,没有“id”列或类似的东西。
  • 尝试打印DataTransaksi::where('transact_id', $request->transact_id)->toSql(),这将有助于stackoverflow.com/questions/29347253/…
  • select * from data_transaksis where transact_id = ?
  • 你在课堂上设置了protected $primaryKey = 'transact_id'laravel.com/docs/8.x/eloquent#primary-keys

标签: php mysql laravel-8


【解决方案1】:

我建议你在 model protected $primaryKey = 'transact_id' 中设置主键,因为 laravel 假定 id` 作为默认主键。

https://laravel.com/docs/8.x/eloquent#primary-keys

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 2019-03-29
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2015-08-06
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多