我有三个表 users、roles 和 role_user 我想使用 Eloquent 最少查询在这些表上插入记录。我当前的插入代码
User::create([
'name' => 'admin',
'email' => 'admin@test.pk',
'password' => bcrypt('admin123'),
]);
//create default roles while installation of application
$roles = array(
array('name' => 'admin', 'display_name' => 'Administrator User', 'description' => 'system admin user'),
array('name' => 'registered', 'display_name' => 'Registered User', 'description' => 'free user')
);
foreach ($roles as $key => $role)
{
Role::create($role);
}
//relation between users and roles
User::find(1)->roles()->attach(1);
在上面的代码中,我创建了一个用户,然后创建了两个角色,然后在 pivot table(role_user)
中插入记录。我想知道有没有其他方法可以通过一个 Eloquent 查询同时在这些表中插入记录或者还有其他更好的方法吗?
最佳答案
遗憾的是,无法同时在多个表中插入行。
我能想到的最好的是:
$user = User::create([
'name' => 'admin',
'email' => 'admin@test.pk',
'password' => bcrypt('admin123'),
]);
//create default roles while installation of application
$roles = [
['name' => 'admin', 'display_name' => 'Administrator User', 'description' => 'system admin user'],
['name' => 'registered', 'display_name' => 'Registered User', 'description' => 'free user']
];
Role::insert($roles);
//relation between users and roles
$user->roles()->attach(1);
在此示例中,您保存了两个查询:
- Laravel 在插入角色时只调用一个
insert
查询,而不是两个; - Laravel 不会从数据库中选择
User
- 而是使用变量;
关于php - 同时在laravel中插入记录多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36425589/