2015-02-02 23 views
12

Tôi có ba bảng,Laravel dữ liệu thêm vào pivot table trong khi chèn bản ghi mới

roles(id, name); 
users(id, email, password); 
user_role(id, user_id, role_id); 

Trong kịch bản này, tôi có bảng người dùng có liên quan đến bảng vai trò với nhiều đối với nhiều mối quan hệ.

Tôi có hai mô hình hùng hồn như

Role 
+users(){ 
    belongsToMany('User') 
} 

User 
+roles(){ 
    belongsToMany('Role') 
} 

Bây giờ, câu hỏi là khi tôi muốn thêm người dùng mới cùng với id của vai trò mà tôi muốn để gán cho người sử dụng. Làm cách nào để chèn giá trị vào bảng tổng hợp với các phương pháp hay nhất của Laravel?

mã hiện tại của tôi là: -

$roles = Input::get('roles'); // arrays of role ids 

$user = new User(); 
$user->username = Input::get('username'); 
$user->password = Hash::make(Input::get('password')); 
$user->save(); 

Phải làm gì tiếp theo ???

+0

Giống như ở đây: http://laravel.com/docs/4.2/eloquent#inserting-related-models –

Trả lời

12

Thực sự là tất cả described in the documentation. Vui lòng đọc phần theo trong tài liệu trước khi đặt câu hỏi về SO.

Anyways, đây là cách bạn làm điều đó:

$user = new User(); 
$user->username = Input::get('username'); 
$user->password = Hash::make(Input::get('password')); 
$user->save(); 
$user->roles()->attach($roles); 

Phần quan trọng là bạn phải tiết kiệm cho người dùng trước khi gắn các vai trò bởi vì nếu người dùng không có một id chưa được sử dụng trong bảng tổng hợp.

+0

Tôi đã thử, nhưng nó trả lại lỗi, Gọi đến phương thức chưa xác định Illuminate \\ Database \\ Eloquent \\ Bộ sưu tập :: đính kèm() –

+3

Có vẻ như bạn đang thực hiện '$ user-> roles-> attach ($ roles)' ... – lukasgeiter

+2

Chỉ cần làm rõ, các dấu ngoặc đơn quan trọng! '' '$ user-> roles()' '' NOT '' '$ user-> roles''' – dloomb

Các vấn đề liên quan