Php 保存多对多关系,同步/附加不';不存在?
在多对多关系中,我有以下两种模型:Php 保存多对多关系,同步/附加不';不存在?,php,laravel,lumen,Php,Laravel,Lumen,在多对多关系中,我有以下两种模型: use Illuminate\Database\Eloquent\Model; class Permission extends Model { /** * The database table used by the model. * * @var string */ protected $table = 'permissions'; /* |--------------------
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');
}
}
及
我在这里试图做的是创建一个可以创建新角色的页面,并将该角色与已创建的权限相关联:
@foreach ($permissions as $permission)
<label class="checkbox">
<input type="checkbox" value="{{ $permission->id }}" name="permissions[]" id="permission_{{ $permission }} }}">
{{ $permission->permission_title }}
</label>
@endforeach
但是,在执行最后一条语句后,出现以下错误:
带有消息“方法同步”的异常“BadMethodCallException”不存在。
'
对于
attach
,我也会遇到同样的错误。另外,我不确定是否应该在某个地方提供中间表的名称permission\u role
?谢谢。您需要使用以下功能:
$role->permissions()->sync($permissions);
不要忘记()
编辑:更多解释:
$role->permissions
是一个集合实例
$role->permissions()
是一个belongTomany
实例,它包含sync()
方法
// logic to save role
$role->save();
$permissions = Input::get('permissions');
$role->permissions->sync($permissions);
$role->permissions()->sync($permissions);