Db:种子和传递变量的一对多关系laravel

时间:2014-03-12 22:52:31

标签: laravel laravel-4

我正在尝试播种数据库,我有两个问题

1)当存在一对多关系时,我想在新的种子类中传递另一个类(前一个表)的参数。我怎样才能做到这一点?

2)$row1->table2()->attach($row2->id);我所做的就是将table2的所有id附加到表1,对吗?

编辑:

class LanguageTableSeeder extends Seeder {

public function run() {

    $lingua_it_catFintapelle= Linguacat::create(array(
        'nome'         => 'Finta pelle',
        'descrizione'  => 'Finta pelle nautica/Finta pelle tempo libero/Finta pelle aviazione/Finta pelle automoto/finta pelle contract/finta pelle uffici/finta pelle esterni',
        'lingua'       => 'it-IT',
        'id_cat'       => $catFintaPelle->id            
    ));

我有这个代码,问题是id_cat字段来自另一个表,我已经播种的另一个类,在数据库播种器类中播种所有允许我重用这样的变量:

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Eloquent::unguard();


        $this->call('Seeder');
        $this->command->info('Seed complete.'); 
    }

}


class CatTableSeeder extends Seeder {

    public function run() {

        $catFintaPelle = Cat::create(array(
            'path_img'         => '/img/Materiale Imbottitura'

        ));
}
}

class LanguageTableSeeder extends Seeder {

    public function run() {

        $lingua_it_catFintapelle= Linguacat::create(array(
            'nome'         => 'Finta pelle',
            'descrizione'  => 'Finta pelle nautica/Finta pelle tempo libero/Finta pelle aviazione/Finta pelle automoto/finta pelle contract/finta pelle uffici/finta pelle esterni',
            'lingua'       => 'it-IT',
            'id_cat'       => $catFintaPelle->id            
        ));
}
}

你在这里看到,我可以在新种子中重复使用种子的id变量,节省了我的时间。 但我读到某个地方,每个表的每个种子应该有自己的类。

1 个答案:

答案 0 :(得分:2)

当您播种时,它会假设您正在播种到新数据库,因此您可以对这些值进行硬编码,而不是从另一个表中加载它们。

如果你想附上所有的ID,你可以做这样的事情:

$ids = OtherTable::all()->lists('id'); // this will generate an array of ids

$row1->table2()->sync($ids); // sync the ids with the relation