Laravel 工厂用户 ID 始终为空

Posted

技术标签:

【中文标题】Laravel 工厂用户 ID 始终为空【英文标题】:Laravel factory user id always null 【发布时间】:2020-02-04 07:40:46 【问题描述】:

当尝试在工厂中获取随机用户 ID 时,它总是返回 null,尽管 DB 包含 50 用户(通过 User 工厂创建)。

'user_id' => User::all()->random()->id

我尝试这样做显示检索到的资源:

dd(User::all()->random())

结果和预期的完全一致

App\User^ #num
  #fillable: array:9 []
  ...
  #attributes: array:14 [
    "id" => 25
  ...
  ]

但这是另一种方法:

dd( User::all()->random()->id )

总是返回null

【问题讨论】:

你试过这样吗? dd((User::all()->random())->id); 【参考方案1】:

请记住,使用该方法您将加载内存中的所有记录,然后随机选择一个以获取您的随机对象。

您可以改进这种直接从数据库中以随机顺序查询一条记录:

$randomUser = User::inRandomOrder()->first();

【讨论】:

尝试将随机用户分配给一个变量,然后提取 ID,但它不起作用。 $randomUser = User::inRandomOrder()->first(); echo dd($randomUser->id); 检查您的型号。也许您的$hidden 配置中包含id 字段。 Check this 了解更多信息。 好的,我发现了问题,我正在使用laracasts.com/discuss/channels/laravel/… 加密用户电子邮件,但显然 Encryptable 特性会阻止整个模型工作 我不明白您的问题与您的实际问题不同。

以上是关于Laravel 工厂用户 ID 始终为空的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 验证规则 - 要求字段显式为空,具体取决于另一个字段的值 (type_id)

如何在 laravel 的配置文件工厂中提供唯一的 user_id

VueJS 和 Laravel - 发布请求始终为空

Larave中CSRF攻击

Laravel Factory:如何使一个字段具有内容而另一个字段为空

在Laravel中创建记录后发送通知