Laravel 观察者添加延迟
Laravel observer add delay
如何在 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.....
}
}
如你所见,我在保存学校数据后将经理分配给学校因此,如果我 运行 我立即观察它不会找到我的用户(经理)所以我需要延迟到我的观察者直到经理数据也存储。
如何为我的观察者添加延迟?
您可以在 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˚ 并得到了我想要的结果。
如何在 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.....
}
}
如你所见,我在保存学校数据后将经理分配给学校因此,如果我 运行 我立即观察它不会找到我的用户(经理)所以我需要延迟到我的观察者直到经理数据也存储。
如何为我的观察者添加延迟?
您可以在 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˚ 并得到了我想要的结果。