Посевные отношения один ко многим в Ларавеле

Мне нужно установить отношения в Laravel, где у каждого пользователя есть много устройств

Модель пользователя

public function devices()
{
return $this->hasMany(Device::class);
}

Модель устройства

public function users()
{
return $this->belongsTo(User::class);
}

}

Таблица device_user

    Schema::create('device_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('device_id')->unsigned()->index();
$table->foreign('device_id')->references('id')->on('devices')->onDelete('cascade');
$table->integer('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});

Сеялка

    factory(App\Device::class, 20)->create()->each(function(App\Device $device) {
$device->users()->attach([
rand(1,5),
rand(6,15),
rand(16,20),
]);
});

Но когда я запускаю миграцию с помощью Seeder, я получаю это сообщение

    Call to undefined method Illuminate\Database\Query\Builder::attach()

Пожалуйста помоги

0

Решение

Привязывайте отношения «многие ко многим», вам не нужна таблица «device_user» для отношения «один ко многим», в одном для многих вы должны создать столбец с именем user_id в таблице устройств и только его. после этого вы можете вставить данные в таблицу устройств с помощью user_id. и получить пользовательские отношения с

Device::user()->get();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]