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

Laravel Backpack一对一关联同名字段如何仅显示一次同步存两张表

实现步骤

1. 调整字段配置,仅保留一个输入框

删掉原来的两个重复字段定义,仅保留主表对应的new_title字段即可:

CRUD::addField([
    'label'     => "Title",
    'type'      => 'text',
    'name'      => 'new_title',
]);

2. 新增保存后回调,同步字段值到关联表

在当前CRUD控制器的setupCreateOperation和setupUpdateOperation方法中按需添加(创建和更新操作都需要同步就两个方法都加,仅创建时需要同步就只加在创建操作中)保存后钩子:

// 表单提交、主表记录保存完成后触发
CRUD::afterSave(function ($entry) {
    // 关联记录不存在时先创建关联
    if (empty($entry->achive)) {
        $entry->achive()->create([
            'new_title' => $entry->new_title,
            // 关联表其他必填字段可在此处补充赋值
        ]);
        return;
    }
    // 关联记录已存在时直接更新字段值
    $entry->achive->update([
        'new_title' => $entry->new_title
    ]);
});

注意事项

  • 确保关联模型Achive的$fillable属性中已加入new_title字段,避免触发批量赋值报错
  • 代码中关联名称achive需要和你模型里定义的hasOne关联方法名完全一致

内容的提问来源于stack exchange,提问作者Lê Mạnh Linh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:39:01