Вопрос о Larvel's Eloquent ORM. Я уже смотрел на SO, извиняюсь, если упустил аналогичный вопрос.Напиши в hasMany отношения с Красноречивым ORM/Laravel
У меня есть модель User, и я пытаюсь написать массив разрешений обратно в модель UserPermissions через связь в модели User.
Я уже установил ссылку hasMany и могу получить правильные данные из объекта User ($user->roles
), но не может решить, как писать, если это вообще возможно.
Это моя основная модель пользователя:
class User extends Eloquent {
protected $table = 'users';
public $timestamps = false;
protected function roles() {
return $this->hasMany('UserPermission');
}
}
и UserPermission модель:
class UserPermission extends Eloquent {
protected $table = 'users_permissions';
public $timestamps = false;
protected $fillable = ['role_id', 'user_id'];
}
На данном этапе, я вернулся к спасению пользователя, а затем запустить UserPermission::insert()
, что позволяет массив, который нужно передать, но я предпочел бы сделать это за один шаг, если это возможно.
Кто-нибудь знает, возможно ли это?
Спасибо!
UPDATE:
Структура таблицы ниже для вашего сведения:
пользователи таблицы
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | 0 | auto_increment |
| username | varchar(255) | NO | | | |
+------------------+------------------+------+-----+---------+----------------+
users_roles стол
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | 0 | auto_increment |
| name | varchar(255) | NO | | | |
| description | varchar(255) | YES | | NULL | |
| url_access | varchar(255) | NO | | | |
+------------------+------------------+------+-----+---------+----------------+
users_permissions стол
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | 0 | auto_increment |
| role_id | int(10) unsigned | NO | | | |
| user_id | int(10) unsigned | NO | | | |
+------------------+------------------+------+-----+---------+----------------+
role_id
относится к users_roles.id
и user_id
относится к users.id
В качестве справочной логики, users_roles
таблица имеет url_access
столбец, который содержит URL. Если пользователю назначена эта роль, у них есть доступ к подстраницам из этого URL-адреса.
Не могли бы вы объяснить, что вы имеете в виду вас хотите «написать» на этом? – patrick
Я могу получить массив разрешений, запросив '$ user-> role'. Я бы хотел, чтобы при создании пользователя или его обновлении можно было вернуть массив данных, например, '$ user-> role ([['role_id' => 1], ['role_id' => 2 ]]); '(user_id для таблицы ролей будет выведен из объекта User), затем вызовите' $ user-> save() 'и создайте обе строки в двух созданных таблицах. – aleayr
Итак, если я правильно понимаю, вы хотите иметь возможность добавлять разные роли пользователю, если пользователь создан или обновлен, и вы хотите иметь строку в таблице для каждой роли, прикрепленной к пользователю? – patrick