如何解决Laravel观察者添加延迟
public function created(School $school)
{
$addTime = Carbon::parse($school->created_at)
->addSeconds(6);
if(Carbon::Now() = $addTime) {
$manager = School::where('id',$school->id)->with('manager')->first();
$user = User::where('id',$school->manager->id)->first();
Mail::to($user->email)->locale('id')->queue(new SchoolGenerated($school,$user));
}
}
逻辑
我的控制器中有这样的功能
public function store(Request $request) {
$school = new School;
//.....
if($school->save()){
//save manager.....
}
}
如您所见,保存学校数据后,我将管理员分配给学校,因此如果我立即运行观察程序,将找不到我的用户(管理员),因此我需要延迟观察者,直到还存储了管理员数据。 / p>
如何向观察者添加延迟?
解决方法
您可以在php中使用sleep(int $seconds )
函数,请尝试以下操作:
public function created(School $school)
{
// add delay
$seconds = 10;
sleep($seconds);
$manager = School::where('id',$school->id)->with('manager')->first();
$user = User::where('id',$school->manager->id)->first();
Mail::to($user->email)->locale('id')->queue(new SchoolGenerated($school,$user));
}
}
,已解决
由于创建经理后我无法获取学校数据,因此我已将观察改为使用创建经理的规则,而不是创建学校,这样我可以获取经理数据并基于经理数据获取学校数据。所以我基本上将逻辑旋转180˚就得到了我想要的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。