Laravel 5.5 В базе данных установлен ноль уведомлений - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь настроить уведомления для пользователя. Но когда метод пытается установить данные в базу данных в моем RequestinfoController, он всегда отправляет ноль: user_id имеет значение

Xampp Версия PHP 7.2.5 Apache / 2.4.33 Ларавелла 5.5

/* Controller */
 public function acceptRequest($employer_id, $user_id)
  {
      $requestinfo = Requestinfo::where(['employer_id'=> $employer_id, 'user_id'=>$user_id])->first();
      $employer = Employer::find($employer_id);

          $requestinfo->update(['accepted'=> 1]);
          if($requestinfo){
            $employer->notify(new AcceptedRequest($user_id));

            return alert_msg('success', 'update_success' ,'requestinfo');
          }
      return alert_msg('error', 'update_error' ,'requestinfo');
  }

это код уведомления

/* Notification */
class AcceptedRequest extends Notification
{
    use Queueable;
    public $user_id;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($user_id)
    {
        $this->$user_id = $user_id;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['database'];
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            "user_id"=> $this->user_id,
            "message"=> "request info accepted",
            "icon"=> "<i class='fas fa-check-square'></i>"
        ];
    }
}

// результат в базе данных

{"user_id": null, "message": "запрос информации принят", "icon": ""}

1 Ответ

0 голосов
/ 01 мая 2019

По умолчанию, когда вы инициализируете объект, переменные имеют значение null.Вот почему вы получаете null как user_id.И настоящая проблема заключается в методе конструктора -

 public function __construct($user_id)
    {
        $this->$user_id = $user_id;
    }

Мы не обращаемся к переменным объекта, начинающимся с $, вам нужно изменить его на $this->user_id = $user_id;

$this->$user_idв основном создает экземпляр Double Variable , что означает, что значение $user_id становится переменной.

Так что, если значение $user_id скажем 10, то $this->$user_id приведет к $this->10, и это не имеет никакого смысла.

Однако, если значение скажет dummy_value, то $this->$user_id приведет к $this->dummy_value, и может существовать переменная объекта с именем dummy_user.

Двойная переменная - действительно мощная функция, еслииспользуется правильно.

...