php Laravel Factory -在单列中使用随机迭代次数生成伪json数组数据

e5njpo68  于 2023-03-11  发布在  PHP
关注(0)|答案(3)|浏览(126)

ListingFactory.php中,我有这样的内容

return [
    'reviews' => json_encode([
        'user' => fake()->name(),
        'body' => fake()->paragraph(),
    ]),
]

另外,在DatabaseSeeder.php中,我现在有这个

\App\Models\Listing::factory(10)->create();

目前的问题是它总是会生成一个评论示例。我想要的是一个范围内的评论随机数。
例如,现在Review的表列将始终为[{}],我需要类似[{}, {}, {}][]的内容。

8tntrjer

8tntrjer1#

不要把事情搞得太复杂,只要生成一个随机数,然后生成那么多评论就行了。

$reviews = [];
$amount = rand(1,10);

for($x = 0; $x < $amount; $x++ ){
   $reviews[] = [
        'user' => fake()->name(),
        'body' => fake()->paragraph(),
    ];
}

return [
    "reviews" => json_encode($reviews),
];
p5cysglq

p5cysglq2#

只需在循环中生成假数据。

$reviews = [];

foreach(range(1,10) as $i) { // f.e. run it 10 times
  $reviews[] = [
     'user' => fake()->name(),
     'body' => fake()->paragraph(),
  ]
}

return [
      "reviews" => json_encode($reviews),
 ]
xfb7svmp

xfb7svmp3#

我相信randomElements()可以做你想做的事情,它从一个序列中取出x元素,把它和一个随机数结合起来,你就可以做到。

json_encode(fake()->randomElements(
    [
        [
            'user' => fake()->name(),
            'body' => fake()->paragraph(),
        ],
        [
            'user' => fake()->name(),
            'body' => fake()->paragraph(),
        ],
        [
            'user' => fake()->name(),
            'body' => fake()->paragraph(),
        ],
    ],
    random_int(1, 3),
)),

如果要更改评论的数量,请增加random_int(1,10),使序列为10。

相关问题