【问题标题】:sending email on schedule in laravel在 laravel 中按时发送电子邮件
【发布时间】:2018-10-08 23:04:30
【问题描述】:

我在下面有这段代码,我可以按时删除用户,

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            $users = User::onlyTrashed()->where(
                'deleted_at', '<=', now()->subDays(1)->toDateTimeString()
            )->get();
            $users->each->forceDelete();
        })->everyMinute(); // this is for test later changes to Daily
    }

我想做什么

是在我删除他们的$users-&gt;each-&gt;forceDelete(); 帐户之前发送电子邮件并通知他们他们的帐户已被删除,因此我将设置电子邮件添加到我的功能中,例如:

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            $users = User::onlyTrashed()->where(
                'deleted_at', '<=', now()->subDays(1)->toDateTimeString()
            )->get();
            $user = $users->each;
            Mail::to($user->email)->send(new UserAutoDeleted($user));
            $users->each->forceDelete();
        })->everyMinute(); // this is for test later changes to Daily
    }

它一直给我错误,例如:

 Symfony\Component\Debug\Exception\FatalThrowableError  : Type error: Argument 1 passed to App\Mail\UserAutoDeleted::__construct() must be an instance of App\User, instance of Illuminate\Support\HigherOrderCollectionProxy given, called in C:\laragon\www\mynewsite\app\Console\Kernel.php on line 35

  at C:\laragon\www\mynewsite\app\Mail\UserAutoDeleted.php: 21
  17:      * Create a new message instance.
  18:      *
  19:      * @return void
  20:      */
  21:     public function __construct(User $user)
  22:     {
  23:         $this->user = $user;
  24:     }
  25:
  26:     /**

  Exception trace:

  1   App\Mail\UserAutoDeleted::__construct(Object(Illuminate\Support\HigherOrderCollectionProxy))
      C:\laragon\www\mynewsite\app\Console\Kernel.php : 35

  2   App\Console\Kernel::App\Console\{closure}()
      C:\laragon\www\mynewsite\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php : 29

  Please use the argument -v to see more details.

有什么想法吗?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    已解决

    我将我的邮件代码放到另一个循环函数中,例如:

    $users->each(function($user) {
      Mail::to($user->email)->send(new UserAutoDeleted($user));
    });
    

    它现在工作得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2018-08-22
      • 2019-10-18
      • 2017-02-11
      • 2015-10-01
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多