oldPid.':newpid-'.$this->newPid; } /** * Get the middleware the job should pass through. * * @return array */ public function middleware(): array { return [(new WithoutOverlapping('profile:migration:move-followers:oldpid-'.$this->oldPid.':newpid-'.$this->newPid))->shared()->dontRelease()]; } /** * Create a new job instance. */ public function __construct($oldPid, $newPid) { $this->oldPid = $oldPid; $this->newPid = $newPid; } /** * Execute the job. */ public function handle(): void { if ($this->batch()->cancelled()) { return; } $og = Profile::find($this->oldPid); $ne = Profile::find($this->newPid); if (! $og || ! $ne || $og == $ne) { return; } $ne->followers_count = $og->followers_count; $ne->save(); $og->followers_count = 0; $og->save(); foreach (Follower::whereFollowingId($this->oldPid)->lazyById(200, 'id') as $follower) { try { $follower->following_id = $this->newPid; $follower->save(); } catch (Exception $e) { $follower->delete(); } } AccountService::del($this->oldPid); AccountService::del($this->newPid); } }