【问题标题】:Laravel Nova 2 models in 1 resourceLaravel Nova 1 个资源中的 2 个模型
【发布时间】:2018-12-11 20:54:42
【问题描述】:

就我而言,我有一个用户

 Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('address_id')->nullable();
        $table->foreign('address_id')->references('id')->on('addresses');
        $table->string('first_name');
        $table->string('insertion')->nullable();
        $table->string('last_name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->string('phone_number');
        $table->string('avatar')->nullable();
        $table->rememberToken();
        $table->timestamps();
        $table->softDeletes();
    });

我有一个地址

Schema::create('addresses', function (Blueprint $table) {
        $table->increments('id');
        $table->string('city');
        $table->string('street');
        $table->string('zip_code');
        $table->string('state');
        $table->string('house_number');
        $table->timestamps();
    });

是否可以在同一个 Nova 用户资源中创建新用户并为其添加地址?

我们可以在资源的字段功能中添加什么?

我需要覆盖默认的创建方法吗?或者这可以用 belongsTo 来解决吗?

目前我可以使用

morhpone

方法,但这不是我想要的。我首先必须创建一个用户,然后我可以添加一个地址。

【问题讨论】:

  • IMO,你的关系倒退了。现在,您的用户属于一个地址。通常,地址属于用户。

标签: laravel laravel-nova


【解决方案1】:

这应该很简单,在你的 Nova User 模型中添加

BelongsTo::make('Address');

Address 字段应该代表User 模型中返回地址关系的函数

所以在你的用户中应该有

public function address()
{
    return $this->belongsTo(Address::class);
}

我希望这就是您正在寻找的,如果提供更多信息,我将很乐意更新我的答案。

【讨论】:

  • 我已经尝试过了,但是我在创建用户字段中有一个地址下拉列表。当我创建一个用户时,我想一次性给它他的名字、电子邮件等以及地址、街道等。
  • @OhDigiT 好的,我知道你在做什么,不确定我目前是否有解决方案。 github.com/laravel/nova-issues/issues/59
  • 我明白了。你知道我是否可以实现或覆盖默认的创建、更新或保存方法?所以我可以自己做数据库插入?
猜你喜欢
  • 2021-09-20
  • 2020-10-08
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 2019-11-25
  • 1970-01-01
  • 2021-03-05
相关资源
最近更新 更多