加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库 – Laravel 4:处理种子关系

发布时间:2020-12-12 16:40:42 所属栏目:MsSql教程 来源:网络整理
导读:在L4的新种子功能中是否有一种简单的方式来管理多对多关系? 一种方法是为数据透视表制作种子,但我会做很多工作. 对这种事情有一个好的工作流程的任何想法? 解决方法 在最新版本的Laravel 4中,您可以定义所有播种器脚本在 DatabaseSeeder类的“run”方法中运
在L4的新种子功能中是否有一种简单的方式来管理多对多关系?

一种方法是为数据透视表制作种子,但我会做很多工作.

对这种事情有一个好的工作流程的任何想法?

解决方法

在最新版本的Laravel 4中,您可以定义所有播种器脚本在 DatabaseSeeder类的“run”方法中运行的顺序.
public function run()
{
    DB::statement('SET FOREIGN_KEY_CHECKS=0;');

    $this->call('PrimaryTableOneSeeder');
    $this->command->info('The first primary table has been seeded!');

    $this->call('PrimaryTableTwoSeeder');
    $this->command->info('The second primary table has been seeded!');

    $this->call('PivotTableSeeder');
    $this->command->info('The pivot table has been seeded!');

    DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}

你会发现我在运行所有播种之前和之后禁用外键约束.这可能是不好的做法,但这是我可以使用truncate函数重新设置每个表的id计数的唯一方法.如果您遵循inserting related models的指南,这种做法可能是不必要的.

class PrimaryTableOneSeeder extends Seeder {

public function run()
{
    DB::table('primaryone')->truncate();
    Primaryone::create(array(
        'field' => 'value','created_at' => new DateTime,'updated_at' => new DateTime
    ));
}

要在我的示例中使用mass assignment,并且作为最新版本的文档,您需要为模型指定一些保护的或可填充的列.为此,只需将属性添加到您的模型中,如下所示:

class Primaryone extends Eloquent {

protected $guarded = array('id');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读