在L4的新种子功能中,有没有一种简单的方法来管理多对多关系?

一种方法是为pivot表制作种子,但我需要做很多工作.

有没有关于这类事情的好工作流程的 idea ?

推荐答案

在最新版本的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函数 for each 表重新设置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');

Laravel相关问答推荐

Laravel中的HTTP请求如何工作?

Laravel将变量从模板到已发布的供应商模板

如何使用PHP版本8.2.6安装beyondcode/laravel-websockets软件包?

如何通过单击进入 vs 代码中的类

laravel 关系集合上的自定义排序

Laravel 5.4 中的自定义助手类

上传时Laravel正在旋转图像

PHP Laravel:如何设置或获取会话数据?

Laravel 5 make:控制器在应用程序文件夹而不是控制器文件夹中创建控制器

Laravel - 验证 - 如果字段为空则需要

如何在同一行显示 Laravel artisan 命令输出?

不支持驱动Driver[] - Laravel 5.3

如何仅从 laravel FormRequest 中获取经过验证的数据?

Laravel 5.1 重命名项目

Laravel 随机排序

Laravel 5 - 为包创建 Artisan 命令

如何将对象(模型类型对象)插入到 Laravel 中特定索引号的集合对象中?

扩展模型 == 扩展 Eloquent?

如何调试 Laravel 框架?

如何处理 php (Laravel api) 和 javascript (AngularJS) 之间的日期时间