问题:从带有工厂的表中随机生成数据
Posted
技术标签:
【中文标题】问题:从带有工厂的表中随机生成数据【英文标题】:Problem : randomly generate data from a table with a factory 【发布时间】:2021-11-25 20:28:17 【问题描述】:我想从我的garage
表中获取一个已经存在的随机 id,所以我遇到了问题。
<?php
namespace Database\Factories;
use App\Models\Car;
use App\Models\Garage;
use Illuminate\Database\Eloquent\Factories\Factory;
class CarFactory extends Factory
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Car::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
return [
'name' => $this->faker->name(),
'release_year' => $this->faker->year(),
'garage_id' => Garage::inRandomOrder('id')->first('id'),
'created_at' => now()
];
问题是:
不推荐使用 PHP:从 fakerphp/faker 1.14 开始:访问 属性“name”已弃用,请改用“name()”。在 /data/www-local/web/lara_sites/swan-formation-laravel/vendor/symfony/deprecation-contracts/function.php 在第 25 行 PHP 已弃用:因为 fakerphp/faker 1.14:不推荐访问属性“year”,请改用“year()”。在 /data/www-local/web/lara_sites/swan-formation-laravel/vendor/symfony/deprecation-contracts/function.php 在第 25 行 Illuminate\Database\QueryException 与消息 'SQLSTATE [23000]:违反完整性约束:1048 列 'garage_id' 不能为空 (SQL: 插入
cars
(name
,release_year
、garage_id
、created_at
、updated_at
) 值(Alf 拜耳, 1994, ?, 2021-10-05 16:21:19, 2021-10-05 16:21:19))'
【问题讨论】:
【参考方案1】:你可以试试这个
'garage_id' => $this->faker->randomElement(Garage::query()->get('id')),
【讨论】:
总是同样的问题 检查一下你的车库桌子上是否有任何数据?【参考方案2】:inRandomOrder 方法可用于对查询结果进行随机排序。 它没有参数,你可以像这样使用它:
'garage_id' => Garage::inRandomOrder()->first()->id,
你应该确保你的车库桌子不是空的。
【讨论】:
我做了更改,但我仍然有同样的问题,我还检查了我的车库桌子不是空的以上是关于问题:从带有工厂的表中随机生成数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从 PostgreSQL 中的另一个表中更新具有随机 id 的表