Ben iki çok-çok ilişkisi:Çoktan çoğa ilişki kaydetme, senkronizasyon/ek mevcut değil mi? 2 modeller örnek
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');
}
}
ve
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');
}
}
Ya burada yapmaya çalışıyorum, yeni Rolü olabilir nerede bir sayfa oluşturmaktır oluşturulur ve zaten oluşturulmuş İzinleriyle bu rolü ilişkilendirmek:
@foreach ($permissions as $permission)
<label class="checkbox">
<input type="checkbox" value="{{ $permission->id }}" name="permissions[]" id="permission_{{ $permission }} }}">
{{ $permission->permission_title }}
</label>
@endforeach
ve denetleyici içinde bu sayfada seçilen izinleri ayıklamak ve her kurtarmaya çalıştı şey:
// logic to save role
$role->save();
$permissions = Input::get('permissions');
$role->permissions->sync($permissions);
son deyimi aşağıdaki hatayı alıyorum yürütüldüğünde Ancak sonra: exception 'BadMethodCallException' with message 'Method sync does not exist.
' Ben de attach
için olsun aynı hata. Ayrıca, bir yere permission_role
ara tablosunun adını vermem gerekiyor mu emin değilim? Teşekkürler.
içeren bir
belongsToMany
örneğidir '()' –Hayır, ben sadece test edilmiş ve '()' olmadan tam aynı hata var etmez. Bunun nedeni, '$ role-> permissions' bir Collection örneğidir ve '$ role-> permissions()' 'sync()' yöntemini içeren bir belongsToMany örneğidir :) – Hammerbot
Teşekkürler, işte bu kadar. – Zed