每个人的亲切时刻!我的问题的本质是: 联系人和PhoneNum有两种型号!模型中的关系:
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
protected $table = 'contacts';
public function phoneNums()
{
return $this->hasMany('App\Models\PhoneNum');
}
}
PhoneNum型号
class PhoneNum extends Model
{
protected $table = 'phoneNums';
protected $fillable = ['phone_num'];
public function contact()
{
return $this->belongsTo('App\Models\Contact');
}
}
以编辑联系人的形式,我得到它的名字和一个包含该联系人电话号码的数组。
的ContactController
public function update(Request $request, $id)
{
$contact = Contact::find($id);
$contact->name = $request->name;
$contact->save();
//what should I do with the array $request->phoneNums ????
return redirect('/');
}
我无法将这些新电话号码与ID上的联系人同步。你能帮我解决这个问题吗?
答案 0 :(得分:0)
首先:将$request->name
更改为$request->input('name')
。通过此更改,您将在大约5个月内知道此变量来自表单。
其次,解决您的问题。这是一个例子。您需要将其更改为正确的名称,并将变量添加到模型中的质量分配字段。
foreach($request->input('phoneNums') as $phoneNumber){
$contact->phoneNums()->create([
'number' => $phoneNumber
]);
}
并查看PSR规则,以便您可以使代码更易于阅读:http://www.php-fig.org/psr/。
答案 1 :(得分:0)
您必须先删除旧的联系人,然后再插入新创建的联系人。
$contact->phoneNums()->delete();
$contact->phoneNums()->saveMany([$request->input('phoneNums')]);
答案 2 :(得分:-1)
添加同步方法以更新功能,如下所示
Public function update(Request $request, $id)
{
$contact = Contact::find($id);
$contact->name = $request->name;
$contact->save();
$contact->phoneNums()->sync($request->phoneNums, true)
return redirect('/');
}