【发布时间】:2019-04-25 09:29:43
【问题描述】:
我在一对多多态关系中有三个表
┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ 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');
}
现在我想更新电话号码,以便用户可以编辑/添加/删除号码。我无法一步完成,所以我尝试先删除所有电话,然后添加新号码
我的代码: 部门控制器:
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- 如果是这样...如何强制执行唯一规则 如果用户只是将电话号码添加到现有号码,则忽略给定 ID?
【问题讨论】:
标签: php laravel-5.8