【发布时间】:2019-01-17 23:54:40
【问题描述】:
我正在尝试使用同一个表的随机 id 为 parent_id 列播种,或者让它为空。
我认为它会起作用:
...
'parent_id' => $faker->boolean() ? Page::all()->random()->id : null,
...
但我收到以下错误:
You requested 1 items, but there are only 0 items available.
有人知道怎么做吗?
更新1:
使用伪动画答案我尝试了流动:
$factory->define(Page::class, function (Faker\Generator $faker) {
...
$parent_id = null;
...
$has_parent = $faker->boolean(50);
Log::debug('$has_parent' . $has_parent);
if ($has_parent) {
$parents = Page::all();
Log::debug('$parents' . count($parents));
if ($parents->isEmpty()) {
Log::debug('isEmpty');
$parent_id = null;
} else {
Log::debug('$parents->random()' . print_r($parents->random(), true));
$parent_id = $parents->random()->id;
}
}
return [
...
'parent_id' => $parent_id,
...
];
}
从我每次运行时看到的Page::all(); 返回空。
知道这是为什么吗?
【问题讨论】:
-
Page::all()返回 0 个结果,所以不能随机选择 1 个 -
我知道这是错误的原因,但我如何生成随机的 parent_id 否则?
-
首先创建(播种)页面以供选择?
-
这是一个很好的问题。不应该被否决。如果您有一个可选的表单字段 - 很常见! - 它可能会填充用户 ID 或项目 ID,或者它可能为空。
标签: laravel laravel-5 seeding faker