【问题标题】:HasOne relation form doesn't update modelHasOne 关系表单不更新模型
【发布时间】:2020-07-21 10:20:18
【问题描述】:

我扩展了模型Lovata\Buddies\User 添加vendor 关系。从后端表单中,我可以创建一个新的供应商模型并添加字段commission。但是如果我更新字段值,过程显示一切正常,但记录永远不会在数据库中更新。没有错误或异常。

User::extend(
    function ($obModel) {
        /** @var User $obModel */
        $obModel->hasOne['vendor'] = [Vendor::class];
    }
);

Vendor 模型与 User 模型有 BelongsTo 关系

    public $belongsTo = [
        'user' => [User::class]
    ];

用户控制器关系配置

vendor:
    label: 'planetadeleste.vendorsshopaholic::lang.label.name'
    manage:
        form: $/planetadeleste/vendorsshopaholic/models/vendor/fields.yaml
        list: $/planetadeleste/vendorsshopaholic/models/vendor/columns.yaml
    view:
        form: $/planetadeleste/vendorsshopaholic/models/vendor/fields.yaml
        toolbarButtons: update|delete

供应商字段

fields:
    commission:
        label: 'planetadeleste.vendorsshopaholic::lang.label.commission'
        span: left

【问题讨论】:

  • 我也遇到了同样的问题,你还在寻找解决方案吗?

标签: php octobercms octobercms-backend


【解决方案1】:

您需要将user_id 字段添加到您的供应商数据库表中。

参考。 https://octobercms.com/docs/database/relations#one-to-one

【讨论】:

  • 感谢您的回答。对,我有。 sql `user_id` int(10) unsigned NOT NULL `commission` decimal(5,2) DEFAULT NULL
【解决方案2】:

十月核心的bug:
只需更改modules\backend\behaviors\RelationController.php中的第1160行

第 1160 行:

$this->viewModel = $this->manageWidget->model;

到这里:

// Ensure that the view widget model is the same instance as the manage widget model
// since they will technically be different object instances in this context as
// $viewWidget->model is populated by $this->relationModel->getResults() and
// $manageWidget->model is populated by $this->relationModel->find($manageId);
$this->viewModel = $this->viewWidget->model = $this->manageWidget->model;

【讨论】:

    猜你喜欢
    • 2021-04-25
    • 2019-06-06
    • 2023-02-16
    • 2017-09-10
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多