Если вы пытаетесь создать Many to Many
отношение на Laravel Отношение ко многим.
Вот как вы это делаете. Вам нужно иметь 2 models
и 3 migrations
.
FIRST
Ваша модель должна выглядеть так:
Модель профиля
protected $guarded = [];
public function availabilities() {
return $this->belongsToMany(Availability::class);
}
Примечание: я использую availabilities
, потому что он в many to many relationship
, так что это лучшее соглашение об именах.
Модель доступности
protected $guarded = [];
public function profiles() {
return $this->belongsToMany(Profile::class);
}
ВТОРАЯ
Ваша миграция должна быть такой:
Миграция профиля
Schema::create('profiles', function (Blueprint $table) {
$table->bigIncrements('id');
...
$table->timestamps();
});
Миграция доступности
Schema::create('availabilities', function (Blueprint $table) {
$table->bigIncrements('id');
...
$table->timestamps();
});
Миграция доступности и профилей
Schema::create('availability_profile', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('availability_id');
$table->unsignedBigInteger('profile_id');
$table->timestamps();
});
Примечание: Iиспользуйте availability_profile
соглашение об именах в алфавитном порядке
INFO
Вы можете сгенерировать эту миграцию, используя artisan command
, например, php artisan make:migration create_availability_profile_table --create=availability_profile
LAST
В вашем контроллере вы можете назначить profile
на availability
Контроллер
Предполагая, что вызапись в вашей базе данных.
public function generateAvailability() {
$profile = Profile::firstOrFail(1);
$role = Role::firstOrFail(1);
$profile->availabilities()->attach($role->id);
dd(profile->availabilities);
}
Примечание: я использую dd
(дампd die), чтобы проверить запись
Вы также можете увидеть это ссылка и это