Вызов функции-члена notify () для целого числа в LARAVEL 5.8 - PullRequest
0 голосов
/ 11 января 2020

Я работаю над графиком задач. Поток мне нужно отправить уведомление в качестве напоминания для их duedate.

вот моя console \ command \ remindDuedate

class remindDuedate extends Command
{
    protected $signature = 'remindDuedate:run';   
    protected $description = 'Command description';    
    public function __construct()
    {
        parent::__construct();
    }    
    public function handle()
    {
        while (true) {
            $loanapplications = LoanApplication::where('archive',false)->where('status','=',2)->get();          

            foreach ($loanapplications as $application) {

                $user = $application->user_id;

                $date_approval = Carbon::createFromTimestamp(strtotime($application->date_approval));

                $duration = $application->loanDuration->num_days;
                $duedate_warning = $duration-3;

                $reminder_date = $date_approval->addDays($duedate_warning)->toDateString();

                $now = Carbon::now('Asia/Manila')->toDateString();
                $duedate = Carbon::now('Asia/Manila')->addDays(3)->toDateString();

                if($reminder_date == $now) {

                    $user->notify(new remindDuedateNotif());
                }
            }           
        }
    }
}

php artisan remindDuedate: запустите

enter image description here

remindDuedateNotif

enter image description here

Почему я получаю "Вызов функции-члена notify () для целого числа"

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 12 января 2020

Вы не выбираете пользователя, поэтому пользователь по-прежнему является целым числом, установите его следующим образом.

$user = User::find($application->user_id);

РЕДАКТИРОВАТЬ

Как видите Уведомление принимает пользователя в качестве первого аргумента. Поэтому отправляйте его вместе с ним.

$user->notify(new remindDuedateNotif($user));

Странно отправлять и уведомлять об объекте пользователя и передавать его. Вам повезло, поскольку каждый параметр $notifiable на самом деле является пользователем, так как это будет объект, от которого вы его отправляете.

Так что удаляйте $ user из __contruct() и везде, где вы обращаетесь к пользователю, вы можете сделать следующее.

'user_id' => $notifiable->id,
0 голосов
/ 12 января 2020

1) пользовательская модель должна обладать признаком уведомлений

Подсветка \ Уведомления \ Уведомляемая

2) вам необходимо добавить отношение между приложением и пользователем в модели приложения

   public function user()
    {
        return $this->belongsTo(User::class);
    }

3) уведомить пользователя приложения:

$application->user->notify(new remindDuedateNotif());
...