【问题标题】:Db:seed and passing variables for one to many relationship laravelDb:一对多关系laravel的种子和传递变量
【发布时间】:2014-04-17 10:01:06
【问题描述】:

我正在尝试创建数据库,我有两个问题

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            
        ));
}
}

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

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

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

    如果你想附加所有的 id,你可以这样做:

    $ids = OtherTable::all()->lists('id'); // this will generate an array of ids
    
    $row1->table2()->sync($ids); // sync the ids with the relation
    

    【讨论】:

    • 您能否更清楚地了解如何将 id 与第二个命令同步,我查看文档并说它仅用于多对多关系
    • 对不起,以为你在做多对多。由于您正在播种数据,因此只需对其进行硬编码,例如 $row1->table2()->attach(1)
    猜你喜欢
    • 2018-10-03
    • 2019-11-17
    • 2018-09-27
    • 2018-06-16
    • 2017-12-29
    • 2019-01-05
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多