2017-11-25 47 views
0

每天的好時光!我的問題的本質是這樣的: 有兩個模型聯繫人和PhoneNum!在模型的關係:Laravel同步hasMany與belongsTo陣列

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

首先:將$request->name更改爲$request->input('name')。有了這個改變,你會在大約5個月內知道這個變量來自一個表單。

二,解決您的問題。這是一個例子。您需要將其更改爲正確的名稱,並將該變量添加到模型中的質量分配字段中。

foreach($request->input('phoneNums') as $phoneNumber){ 
    $contact->phoneNums()->create([ 
     'number' => $phoneNumber 
    ]); 
} 

,並採取看看PSR規則,這樣就可以使你的代碼更讀友好:http://www.php-fig.org/psr/

0

添加同步方法更新功能,如下

Public function update(Request $request, $id) 

{ 
    $contact = Contact::find($id); 
    $contact->name = $request->name; 
    $contact->save(); 
    $contact->phoneNums()->sync($request->phoneNums, true) 

    return redirect('/'); 
}