Вызов функции-члена notify() на integer в LARAVEL 5.8

Вызов функции-члена notify() на integer в LARAVEL 5.8

11.01.2020 11:50:16 Просмотров 31 Источник

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

вот моя консоль\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 ремесленника remindDuedate:бег

enter image description here

remindDuedateNotif

enter image description here

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

Спасибо Вам заранее!

У вопроса есть решение - Посмотреть?

Ответы - Вызов функции-члена notify() на integer в LARAVEL 5.8 / Call to a member function notify() on integer in LARAVEL 5.8

Является ответом!
mrhn

12.01.2020 12:08:48

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

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

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

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

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

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

__contruct()
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698640#comment105557575_59698640
я думаю, что ошибка исправлена, но появилась новая. новая ошибка гласит: "Symfony\Component\Debug\Exception\FatalThrowableError: слишком мало аргументов для работы App\Notifications\remindDuedateNotif::_ _ construct (), 0 передано E:\wamp64\www\aftscredit-appzcoder\app\Console\Commands\remindDuedate-да.php на строке 66 и ровно 1 ожидаемый" . строка 19 указывает на публичную функцию _ _ construct($user). пожалуйста, обратитесь к моему скриншоту уведомления " remindDuedateNotif"
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698640#comment105557843_59698640
Обновлен ответ
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698640#comment105557990_59698640
спасибо, что обновили свой ответ. Я уже применил его. а также я удалил $ user form public function _ _ construct (). должен ли я удалить "$this - >user = $user; " внутри него? потому что после того, как я удалить $user у меня есть "неопределенная переменная: пользователь"
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698640#comment105558088_59698640
менять все $Пользователь $подлежащих регистрации
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698640#comment105558377_59698640
это сейчас работает!!! большое спасибо @mrhn!
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698640#comment105558379_59698640
Нет проблем дружище
AWS PS

12.01.2020 12:57:52

1) Модель пользователь должен иметь нотифицировать черта

Осветить\Уведомления\Уведомляемый

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

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

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

$application->user->notify(new remindDuedateNotif());
https://stackoverflow.com/questions/59698525/call-to-a-member-function-notify-on-integer-in-laravel-5-8/59698992#comment105557558_59698992
привет у меня уже есть notifiable на моей модели пользователя и это уже есть рабочие отношения между приложением и пользователем
Помочь в развитии проекта:
Закрыть X