延迟工作期间身份证丢失

问题描述 投票:0回答:1

我正在调度一个延迟作业,该作业应该在数据库中创建一些条目:

`$userId = Auth::user() ? Auth::user()->getAuthIdentifier() : null;
 $job = new DelayedAddPeopleJob($event, $userId);
 dispatch($job)->delay(DelayedAddPeopleJob::DELAY);`

15 分钟后,DelayedAddPeopleJob 被执行,如果条目不存在,我会在数据库中创建条目。

`AutoAddHistory::firstOrCreate([
                AutoAddHistory::MATRIX_ID_COLUMN => $matrixId,
                AutoAddHistory::ROLE_ID_COLUMN => $ppr->getRoleId(),
                AutoAddHistory::PERSON_ID_COLUMN => $ppr->getPersonId(),
                AutoAddHistory::CREATED_BY_COLUMN => $this->placedBy,
 ]);`

在此实例中,placedBy 是传递给 DelayedAddPeopleJob 的 userId。然而,当 15 分钟后条目出现在数据库中时,由于某种原因,CREATED_BY 在数据库中为 NULL。

我做错了什么吗?我试图找到解决方案或类似的问题,但找不到。尝试通过魔术方法而不是 const 访问它,但没有帮助。

php laravel eloquent delay illuminate
1个回答
0
投票

作业不能包含用户会话数据

因此,你的条件

$userId = Auth::user() ? Auth::user()->getAuthIdentifier() : null;
总是变为false并返回null,你必须以另一种方式调用userId。

您可以将用户ID存储在父记录表中,并在需要时从这里获取。

还要确保

CREATED_BY
fillable在您的模型中定义。

© www.soinside.com 2019 - 2024. All rights reserved.