Создать и сохранить модель с заполненным отношением в Eloquent - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть следующая модель:

<?php

// namespaces removed for brevity

class User extends Model {

    /** {@inheritdoc} */
    protected $fillable = [
        'email',
        'password',
        'last_name',
        'first_name',
        'permissions',
    ];

    /** {@inheritdoc} */
    protected $hidden = ['password'];

    /**
     * @var string serve pra armazenar o nome da tabela desta entidade
     */
    protected $table = 'users';

    /**
     * @var bool deve criar campos para salvar datas da última alteração
     */
    public $timestamps = false;

    /**
     *
     */
    public function addRole(Role $role): void
    {
       $this->roles->put($role); // works in runtime but not persistence
       $this->roles->add($role); // can't remember what happens
       $this->roles()->attach($role); // User not persisted yet, so with no ID cannot construct relation
    }

    /**
     * Creates relationship with roles table.
     */
    public function roles(): BelongsToMany
    {
        // return $this->belongsToMany(Permission::class)->using(RolePermission::class);

        $pivotName = (new UserRole())->getTable();

        return $this->belongsToMany(Role::class, $pivotName)->withTimestamps();
    }
}

Вот шаги, которые я выполняю:

  1. Создание экземпляра модели Eloquent DB new User.
  2. Добавьте роли к нему через User::addRole(Role $role) (см. Код метода и комментарии).
  3. Сохранять пользовательский экземпляр через User::save().

Пользователь сохраняется в БД, но не взаимосвязывается с ролями.

...