使用 Faker DateTime 进行 Laravel 播种

巴达尔汗

好的,所以我正在开发一个应用程序,它从设备接收一些实时传感器读数并将其存储在数据库内的表中。根据用例,设备每天将保持活动状态至少 8 小时,并在指定的时间间隔(比如 1 分钟)后将其传感器读数传输到服务器,然后如前所述将其保存在数据库表中。此应用程序提供的功能之一是,它允许您简要分析系统中特定设备的历史传感器数据,这可能会持续一两年以上,具体取决于设备的激活时间。例如,如果一个设备在 2016 年 8 月 10 日被激活,那么它从那时起就以 1 分钟的间隔传输数据,每天至少 8 小时到当前时间点。

我如何创建这样的虚拟数据来模拟这种情况?(因为我需要它来测试我正在开发的功能)。

我曾尝试使用Faker 库DateTime 方法,但它们似乎都不符合我的需要。

任何帮助,将不胜感激。谢谢

编辑 1:到目前为止,这是 ReadingTableSeeder.php 类。

<?php

use App\Models\Reading;
use Illuminate\Database\Seeder;

class ReadingTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    $faker = Faker\Factory::create();

    // LOOP BODY START

    $dateTime = // Here i need to create datetime

    Reading::create([
        'device_key' => '60:01:94:37:D1:34',
        'temp' => $faker->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 50.00),
        'hum' => $faker->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 50.00),
        'oxygen' => $faker->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 50.00),
        'created_at' => $dateTime,
        'updated_at' => $dateTime
    ]);

    // LOOP BODY END

  }
}

循环将从设备被激活的点开始,并在 1 分钟间隔后每次迭代创建一个新读数。

基斯利克

一天的代码如下所示:

$date = now(); // helper for Carbon::now()

foreach (range(1, 480) as $i) { // 8*60 minutes

    //do something with $date

    $date->addMinute(); // increments by a minute
}

多天的代码如下所示:

$date = now(); // helper for Carbon::now()
foreach (range(1, 365) as $day) {
    foreach (range(1, 480) as $i) { //8*60

        //do something with $date

        $date->addMinute(); // increments by a minute
    }

    $date->subMinutes(480)->addDay(); // subtract 480 minutes and increment by a day
}

注意:一天的代码将创建480插入(一年480*365),也许更好的方法是只运行一次并在运行测试套件之前使用 sqldump/import


您需要$date正确初始化,假设设备将在早上 8 点启动,您可以执行以下操作:

$date = now()->endOfDay()->subHours(16); // 2018-03-25 07:59:59.999999
// or
$date = (new Carbon\Carbon('today noon'))->subHours(4); // 2018-03-25 08:00:00.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章