Laravel nova 使用 belongsTo 保存 Resource 字段

Laravel nova save Resource field with belongsTo

我想在 Laravel Nova 中保存资源。

我实际上有 2 个资源和 2 个模型:

CustomerCustomerType

客户有这些字段:

Text::make('Vat')
   ->rules('required', 'string', 'max:254')
   ->creationRules('unique:customers,vat')
   ->updateRules('unique:customers,vat,{{resourceId}}'),

BelongsTo::make('Type', 'customer_type', 'App\Nova\CustomerType'),

客户模型有关系customer_type:

public function customer_type(){
        return $this->belongsTo('App\Models\CustomerType', 'id', 'type');
    }

当我打开创建 客户资源视图 时,我在 select 框中正确看到了类型列表,但是当我尝试设置类型并保存它时 return SQL 错误:

SQLSTATE[HY000]: General error: 1364 Field 'type' doesn't have a default value (SQL: insert into customers (vat, id, name, updated_at, created_at) values (vat, ?, test, 2019-07-31 10:41:05, 2019-07-31 10:41:05))

如何将类型添加到nova资源保存?

我还尝试将关系的名称从 customer_type 更改为 type,但它 return 相同错误。

我现在的数据库是:

客户 table

customer_type table:

编辑

我也试过

BelongsTo::make('CustomerType'),

现场和客户模型:

public function customertype(){
        return $this->belongsTo('App\Models\CustomerType', 'id', 'type');
    }

但是出现了同样的错误。

对于其他开发者

我发现了我的错误。

在我的模型中,我颠倒了关系的外键和所有者键:

而不是:

public function customertype(){
        return $this->belongsTo('App\Models\CustomerType', 'id', 'type');
    }

应该是

public function customertype(){
        return $this->belongsTo('App\Models\CustomerType', 'type', 'id');
    }