Gắn / tách
Eloquent cũng cung cấp một số phương pháp trợ giúp bổ sung để làm việc với các mô hình liên quan thuận tiện hơn. Ví dụ, hãy tưởng tượng một người dùng có thể có nhiều vai trò và một vai trò có thể có nhiều người dùng. Để đính kèm vai trò cho người dùng bằng cách chèn bản ghi vào bảng trung gian kết hợp các mô hình, hãy sử dụng phương pháp đính kèm:
$user = App\User::find(1);
$user->roles()->attach($roleId);
Khi đính kèm mối quan hệ vào một mô hình, bạn cũng có thể chuyển một mảng dữ liệu bổ sung để chèn vào bảng trung gian:
$user->roles()->attach($roleId, ['expires' => $expires]);
Bạn cũng có thể sử dụng Đồng bộ hóa nếu bạn muốn xóa các vai trò cũ và chỉ giữ các vai trò mới mà bạn đang đính kèm hiện tại
$user->roles()->sync([1 => ['expires' => $expires], 2 => ['expires' => $expires]);
Hành vi mặc định có thể được thay đổi bằng cách chuyển "false" làm đối số thứ hai. Thao tác này sẽ gắn các vai trò với id 1,2,3 mà không ảnh hưởng đến các vai trò hiện có.
Trong chế độ này, đồng bộ hóa hoạt động tương tự như phương pháp đính kèm.
$user->roles()->sync([1 => ['expires' => $expires], 2 => ['expires' => $expires], false);
Tham khảo:
https://laravel.com/docs/5.4/eloquent-relationships