Tôi có hai sau 2 mô hình trong nhiều-nhiều mối quan hệ:Lưu mối quan hệ nhiều-nhiều, đồng bộ hóa/đính kèm không tồn tại?
use Illuminate\Database\Eloquent\Model;
class Permission extends Model
{
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'permissions';
/*
|--------------------------------------------------------------------------
| Relationship Methods
|--------------------------------------------------------------------------
*/
/**
* many-to-many relationship method
*
* @return QueryBuilder
*/
public function roles()
{
return $this->belongsToMany('App\Admin\Role');
}
}
và
class Role extends Model
{
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'roles';
/*
|--------------------------------------------------------------------------
| Relationship Methods
|--------------------------------------------------------------------------
*/
/**
* many-to-many relationship method.
*
* @return QueryBuilder
*/
public function users()
{
return $this->belongsToMany('App\Admin\User');
}
/**
* many-to-many relationship method.
*
* @return QueryBuilder
*/
public function permissions()
{
return $this->belongsToMany('App\Admin\Permission');
}
}
Những gì tôi đang cố gắng để làm ở đây, là để tạo ra một trang nơi Vai trò mới có thể đã tạo và liên kết vai trò đó với quyền đã tạo Quyền:
@foreach ($permissions as $permission)
<label class="checkbox">
<input type="checkbox" value="{{ $permission->id }}" name="permissions[]" id="permission_{{ $permission }} }}">
{{ $permission->permission_title }}
</label>
@endforeach
và trong bộ điều khiển Tôi đã cố gắng trích xuất các quyền đã chọn từ trang này và lưu mọi điều:
// logic to save role
$role->save();
$permissions = Input::get('permissions');
$role->permissions->sync($permissions);
Tuy nhiên sau khi báo cáo kết quả cuối cùng được thực hiện tôi nhận được lỗi sau: exception 'BadMethodCallException' with message 'Method sync does not exist.
' Các lỗi tương tự tôi nhận được cho attach
là tốt. Ngoài ra, tôi không chắc liệu tôi có nên cung cấp đâu đó tên của bảng trung gian permission_role
không? Cảm ơn.
Nó cũng hoạt động mà không '()' –
Không, nó không tôi chỉ thử nghiệm và có những lỗi chính xác cùng mà không có '()'. Đó là bởi vì '$ role-> permissions' là một cá thể Collection, và' $ role-> permissions() 'là một thể hiện của attributeToTo có chứa phương thức' sync() ':) – Hammerbot
Cảm ơn, đúng vậy. – Zed