Laravel 中一对多的播种关系
Seeding Relationship one to many in Laravel
我需要在 Laravel 中建立关系,其中每个用户都有很多设备
用户模型
public function devices()
{
return $this->hasMany(Device::class);
}
设备型号
public function users()
{
return $this->belongsTo(User::class);
}
}
device_user table
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),
]);
});
但是,当我 运行 使用播种器迁移时,我收到此消息
Call to undefined method Illuminate\Database\Query\Builder::attach()
求求你帮忙
附加多对多关系,一对多关系不需要device_user table,在一对多关系中,你应该创建一个名称为user_id的列设备 table 就是这样。之后,您可以使用 user_id 在设备 table 中插入数据。并获得与
的用户关系
Device::user()->get();
我需要在 Laravel 中建立关系,其中每个用户都有很多设备
用户模型
public function devices()
{
return $this->hasMany(Device::class);
}
设备型号
public function users()
{
return $this->belongsTo(User::class);
}
}
device_user table
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),
]);
});
但是,当我 运行 使用播种器迁移时,我收到此消息
Call to undefined method Illuminate\Database\Query\Builder::attach()
求求你帮忙
附加多对多关系,一对多关系不需要device_user table,在一对多关系中,你应该创建一个名称为user_id的列设备 table 就是这样。之后,您可以使用 user_id 在设备 table 中插入数据。并获得与
的用户关系Device::user()->get();