У меня три таблицы в полиморфных отношениях «один ко многим»
┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ users │ │ phones │ │ departments │
├─────────────────┤ ├─────────────────┤ ├──────────────────┤
| id | | id | | id |
| name | | name | | name |
└─────────────────┘ | phones_type | └──────────────────┘
| phones_id |
└─────────────────┘
Модель телефона:
public function phones()
{
return $this->morphTo();
}
Модель пользователя:
public function phones()
{
return $this->morphMany('App\Phone', 'phones');
}
Модель отдела:
public function phones()
{
return $this->morphMany('App\Phone', 'phones');
}
Теперь я хочу обновить телефонные номера, чтобы пользователь мог редактировать / добавлять / удалять номера. Я не могу понять это за один шаг, поэтому я попытался сначала удалить все телефоны, а затем добавить новые номера
Мой код: DepartmentController:
public function update(UpdateDepartment $request, Department $department)
{
$department->phones()->delete();
$department->name = $request['name'];
$department->save();
foreach ($request->phone as $value) {
$phone = new Phone;
$phone->name = $value;
$ department->phones()->save($phone);
}
}
UpdateDepartment.php:
public function rules()
{
return [
'name' => 'required|alpha_spaces|min:3|max:255|unique: department,name,'.$this-> department ->id,
'phone' => 'required|array|unique:phones,name,'
'phone.*' => 'required|distinct|unique:phones,name,',
];
}
У меня два вопроса:
1 - это правильный путьсделать это?есть ли способ синхронизировать обновленные телефонные номера за один шаг?
2- Если это так ... Как заставить уникальное правило игнорировать заданный идентификатор, если пользователь просто добавляет телефонные номера к существующимцифры?