标签: laravel-seeding

Laravel timestamps()不会创建CURRENT_TIMESTAMP

我有一个具有该timestamps()方法的迁移,然后我有一个种子来播种该表.

Schema::create('mytable', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    $table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)

种子看起来像这样:

DB::table('mytable')->insert([
    [
        'title' => 'My Awesome Title'
    ]
]);
Run Code Online (Sandbox Code Playgroud)

当它全部运行时使用:

php artisan migrate:refresh --seed
Run Code Online (Sandbox Code Playgroud)

该项目被插入,但值created_atupdated_at0000-00-00 00:00:00那他们为什么不正确?

这是它创建的列方案:

`created_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
Run Code Online (Sandbox Code Playgroud)

我想要这些方案:

`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-seeding laravel-migrations

12
推荐指数
2
解决办法
3万
查看次数

除了一个之外,如何运行laravel migration和DB seeder

我要运行许多迁移和播种器文件,虽然我需要运行所有文件,但目前我需要跳过一个迁移和播种器.

我如何从laravel migration和db seeder命令中跳过一个文件.

我不想从迁移或种子文件夹中删除文件以跳过该文件.

php laravel laravel-seeding laravel-migrations

11
推荐指数
1
解决办法
5075
查看次数

如何在Laravel中实现自己的Faker提供程序

我想在Laravel中为Faker创建一个自定义提供程序(例如,一个用于随机构建名称).

我在哪里将自定义提供程序存储在我的应用程序中以及如何使用它?

php faker laravel laravel-seeding

11
推荐指数
3
解决办法
6765
查看次数

使用模型工厂,一对一和一对多关系定义Laravel外键,而无需创建不必要的模型

最近,我一直试图通过Model Factories和Faker使用Laravel播种来播种我的数据库.

对于简单的模式,让它工作变得轻而易举:).但是,在处理涉及外键和表关系的复杂数据库模式时,我遇到了一些问题:

  • 一对一
  • 一对多
  • 多对多

...就像链接中描述的那样: 模型工厂中的Laravel 5.1外键.

在本主题中,官方文档建议运行如下数据库种子:

public function run()
{
    factory(App\User::class, 50)->create()->each(function ($u) {
        $u->posts()->save(factory(App\Post::class)->make());
    });
}
Run Code Online (Sandbox Code Playgroud)

...但是这个解决方案存在一个问题:当处理许多数据库表并运行许多种子(它们之间有许多关系)时,使用这种方法创建许多不必要的模型是很常见的.例如,如果我们在上面的示例之前运行了PostsTableSeeder.php,那么所有这些帖子都不会链接到用户,并且永远不会用于测试和开发......

为了找到处理这种情况的方法,我找到了一个适合我的功能解决方案,避免了那些'孤儿'模型的不必要的创建......

我想与大家分享,所以在答案中只是解释:).

php faker laravel laravel-5 laravel-seeding

9
推荐指数
3
解决办法
5468
查看次数

在文件夹内调用 Laravel Seeder

我已升级到 Laravel 8,但子目录中的自定义播种器无法正常工作。该文件位于database/seeders/tests/TestSeeder.php.

当我运行该命令时php artisan db:seed --class="TestSeeder",它返回一条错误消息:

Target class [Database\Seeders\TestSeeder] does not exist.
Run Code Online (Sandbox Code Playgroud)

播种机

<?php

namespace Database\Seeders\Tests;

class TestSeeder extends BaseSeeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
       // codes
    }
}
Run Code Online (Sandbox Code Playgroud)

作曲家.json

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/",
        "Database\\Seeders\\Tests\\": "database/seeders/tests/"
    }
},
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-seeding laravel-8

9
推荐指数
1
解决办法
1万
查看次数

无法找到四位数年份数据缺失

我正在尝试使用Laravel 5.2中的工厂

我的代码在用户工厂中死掉:

$factory->define(App\User::class, function (Faker\Generator $faker) {
$countries = Countries::all()->pluck('id')->toArray();

return [
    'name' => $faker->name,
    'email' => $faker->email,
    'password' => bcrypt(str_random(10)),
    'grade_id' => $faker->numberBetween(1, 5),
    'country_id' => $faker->randomElement($countries),
    'city' => $faker->city,
    'latitude' => $faker->latitude,
    'longitude' => $faker->longitude,
    'role_id' => $faker->numberBetween(1, 3),
    'verified' => true,
    'remember_token' => str_random(10),
    'provider' => '',
    'provider_id' => str_random(5)

];
});
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

A four digit year could not be found   Data missing
Run Code Online (Sandbox Code Playgroud)

我找到了原因,但不知道如何解决它.

当我打电话给工厂时,我称之为:

    factory(User::class)->create(['role_id',2]);
Run Code Online (Sandbox Code Playgroud)

如果我这样称呼它:

    factory(User::class)->create();
Run Code Online (Sandbox Code Playgroud)

我没有错误.但我真的需要培养不同类型的用户......

任何的想法???

php laravel laravel-seeding

8
推荐指数
1
解决办法
1万
查看次数

将数量或其他参数传递给 Laravel 播种机

我想传递一个参数来定义我想在数据库播种期间创建多少条记录,而无需手动编辑工厂。

我尝试了不同的变体 php artisan db:seed --class=UsersTableSeeder [using different args here]

我似乎找不到任何文档,所以我不知道在功能上是否存在。这样的东西存在吗?

class UsersTableSeeder extends Seeder
{
    public $limit = null;

    public function __construct($limit = 1) {
        $this->limit = $limit;
    }

    public function run()
    {
      echo $this->limit;
    }
}
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-seeding

8
推荐指数
4
解决办法
5308
查看次数

删除laravel迁移脚本中的测试数据

我正在尝试清除生产表中的测试数据。在简单的环境中,我可以编写一个脚本来清理测试数据,但我想知道如何在 Laravel 迁移脚本中执行相同的操作

我有一个生产测试用户,想清除数据库中生成的所有相关记录。在种子文件中,我可以根据电子邮件地址获取学生 ID,然后根据 ID 删除课程和其他信息?。不知道是不是听起来像laravel的做事方式!

学生 ID = 101

他注册了三个课程 他有出勤记录 他有交流记录

现在我想根据他的 emailId 获取学生 id 然后想从课程、出勤、交流表中删除记录,最后从学生表中删除 id

我在做

$sdetail = student::where('email','some@test.com')->first();
echo "you are checking fir: ".$sdetail ->id;
$classes= class::where('studentId',"$sdetail->id")->get();
foreach($classes as $class)
{
    echo $class->name;   //print only one record I have three rec!
    DB::table('courses')->where("id",$class->id)->delete();
}
Run Code Online (Sandbox Code Playgroud)

任何想法解决这个问题!

laravel laravel-seeding

7
推荐指数
2
解决办法
1万
查看次数

什么是Laravel中的数据库种子?

我使用Laravel框架,最近我被告知有一些名称database seeding会为我们的测试生成一个假数据集.我的理解是否正确?

那太奇怪了.这个怎么运作?它如何知道我在X列数据库中需要哪种类型的数据?它是如何产生的?

另外,我不能制作真实数据集的种子(类似于导出)吗?你知道,我不太懂英语,这就是为什么我无法理解数据库领域种子的概念.

php laravel laravel-seeding

7
推荐指数
2
解决办法
1万
查看次数

更新现有列的数据并通过迁移复制数据

是否可以添加一个新列,将一些数据复制到这个新列并通过 Laravel 迁移更新另一列中的数据?

我有一张类似这样的桌子;

ID 物品 价格
1 项目一 100.00
2 项目二 200.00

现在我需要做的是,

  1. old_price向该表添加一个新列
  2. 将列中的值复制price到新添加的old_price
  3. 将列中的值乘以price5 并更新同一列

新表应该看起来像这样;

ID 物品 价格 旧价格
1 项目一 500.00 100.00
2 项目二 1000.00 200.00

是否有可能通过迁移或种子或其他东西来实现这一目标?

此更改需要在已经投入生产的应用程序上完成,因此删除并重新创建表对我来说不是一个选择。

此外,old_price创建该列只是为了保留该列当前值的引用price。在此之后它不会更新,如果一切都按照新价格进行,则可能会在以后的更新中删除。所以我不需要使用任何模型事件来更新列。

非常感谢您能在这方面给我的任何帮助。谢谢。

laravel laravel-seeding laravel-migrations laravel-schema-builder

6
推荐指数
1
解决办法
8566
查看次数