You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel从其他表取数写入另一表时字段值格式错误如何解决?

问题根因

你写入的字段值不符合预期,是因为调用了get()方法查询数据,该方法返回的是结果集合(Collection),哪怕只有一条匹配数据,也会被包裹为数组对象结构,直接存入数据库字段时会被序列化为[{"字段名":"值"}]的JSON格式。

另外你的现有代码存在冗余查询的问题,对同一张表发起了3次查询请求,可优化为一次查询完成逻辑。

修复后的代码

Model 代码

public function presensi($data)
{
    // 一次查询获取所需字段,first()直接返回单条结果对象,无匹配数据时返回null
    $karyawan = DB::table('tbl_karyawan')->where($data)->first(['Nip_kyn', 'Nama_kyn']);

    if ($karyawan) {
        $values = [
            'Nip_kyn' => $karyawan->Nip_kyn, // 直接取对象属性,得到纯字符串值
            'Nama_kyn' => $karyawan->Nama_kyn,
            'Jam_msk' => now(),
            'Log_date' => today()
        ];
        DB::table('tbl_absen')->insert($values);
    } else {
        echo 'data not available';
    }
}

如果你不想调整原有代码结构,只需要把原来的get()方法替换为value()方法即可直接拿到字段的纯值:

// 原有代码只需要修改这两行即可
$namakyn = DB::table('tbl_karyawan')->where($data)->value('Nama_kyn');
$nippppp = DB::table('tbl_karyawan')->where($data)->value('Nip_kyn');

Controller代码不需要做任何改动,原有逻辑可正常运行。

内容的提问来源于stack exchange,提问作者Nico Aramy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:03