loz*_*Omr 5 pivot-table laravel laravel-4
我有以下表用户,角色和数据透视表role_user具有以下表结构
用户
角色
ROLE_USER
用户身份
<?php
class PivotTableSeeder extends Seeder {
public function run()
{
// Seeds the roles table
DB::table('roles')->delete();
DB::table('role_user')->insert(array(
array('user_id' => 1, 'role_id' => 1),
array('user_id' => 2, 'role_id' => 2),
array('user_id' => 3, 'role_id' => 1),
array('user_id' => 3, 'role_id' => 3),
array('user_id' => 3, 'role_id' => 5)
));
}
}
Run Code Online (Sandbox Code Playgroud)数据透视表是使用的种子 DB select
有没有更好的方法来种子表,包括数据透视表?
我想也许当我播种我的用户表时,它也将播种role_user表,而不是手动将数据插入数据透视表.
例:
角色
用户
ROLE_USER
编辑
我使用这个Eloquent为我的用户表播种.无论如何,在播种用户时,role_user还会更新吗?
User::create(array(
'id' => '1',
'username' => 'user',
'password' => 'pass'
));
User::create(array(
'id' => '2',
'username' => 'user2',
'password' => 'pass2'
));
Run Code Online (Sandbox Code Playgroud)
你可以尝试这个(假设你已经播种了角色):
$user = User::create(['id' => '1', 'username' => 'user', 'password' => 'pass']);
$user->roles()->sync([1,2]); // array of role ids
$user = User::create(['id' => '2', 'username' => 'user2', 'password' => 'pass2']);
$user->roles()->sync([3,4]); // array of role ids
Run Code Online (Sandbox Code Playgroud)
我已经用过[]而不是array(),如果你PHP之前就ver-5.4应该使用array().
出于测试目的,我使用非常简单快速的方法,如下所示.
想象一下,我们拥有带有数据透视表的用户和类别(这来自JeffreyWay的生成器btw):
<?php
// Composer: "fzaninotto/faker": "v1.3.0"
use Faker\Factory as Faker;
class UsersTableSeeder extends Seeder {
public function run()
{
$faker = Faker::create();
foreach(range(1, 100) as $index)
{
User::create([
'username' => $username = $faker->userName,
'email' => $faker->email,
'password' => Hash::make($username),
'account_id' => $index
]);
}
}
}
// all other seeders look the same, so I paste just the code that matters:
// Categories
foreach(range(1, 30) as $index)
{
Category::create([
'name' => $faker->word
]);
}
// pivot table
foreach(range(1, 50) as $index)
{
DB::table('category_user')->insert([
'category_id' => rand(1,30),
'user_id' => $faker->unique()->randomNumber(1, 100)
]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10733 次 |
| 最近记录: |