Laravel Nova 2 модели в 1 ресурсе

В моем случае у меня есть Пользователь

 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?

Что мы можем добавить в функцию полей Ресурса?

Мне нужно перезаписать метод создания по умолчанию? Или это можно исправить с помощью ownTo?

В настоящее время я получил его для работы с использованием

morhpOne

метод, но это не то, что я хочу. Сначала мне нужно создать пользователя, а затем добавить адрес.


person OhDigiT    schedule 11.12.2018    source источник
comment
ИМО, у вас обратные отношения. Прямо сейчас ваши пользователи принадлежат адресу. Обычно адрес принадлежит пользователю.   -  person ceejayoz    schedule 12.12.2018


Ответы (1)


Это должно быть просто, в вашей модели Nova User добавьте

BelongsTo::make('Address');

Поле Address должно представлять функцию в вашей модели User, которая возвращает отношение Address

Итак, у вашего пользователя должно быть

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

Я надеюсь, что это именно то, что вы ищете, я буду рад обновить свой ответ, если будет предоставлена ​​дополнительная информация.

person Marcus    schedule 11.12.2018
comment
Я уже пробовал это, но затем у меня есть раскрывающийся список для адресов в моем поле создания пользователя. Когда я создаю пользователя, я хочу дать ему его имя, адрес электронной почты и т. Д., А также адрес, улицу и т. Д. За один раз. - person OhDigiT; 12.12.2018
comment
@OhDigiT Хорошо, я понимаю, что вам нужно, не уверен, есть ли у меня текущее решение для этого. github.com/laravel/nova-issues/issues/59 - person Marcus; 12.12.2018
comment
хорошо, я вижу. Знаете ли вы, могу ли я реализовать или перезаписать стандартные методы создания, обновления или сохранения? Значит, я могу самостоятельно вставить базу данных? - person OhDigiT; 12.12.2018