2016-10-10 7 views
0

Код ошибки и обновления приведен ниже. Я использую Laravel 5.3 и php 7.0.Laravel 5.3 Ошибка: создание объекта по умолчанию из пустого значения

Я google, но все еще не ясно, любая помощь будет принята с благодарностью.

ActivationService.php

<?php 

namespace App; 


use Illuminate\Mail\Mailer; 
use Illuminate\Mail\Message; 

class ActivationService 
{ 

    protected $mailer; 

    protected $activationRepo; 

    protected $resendAfter = 24; 

    public function __construct(Mailer $mailer, ActivationRepository $activationRepo) 
    { 
     $this->mailer = $mailer; 
     $this->activationRepo = $activationRepo; 
    } 

    public function sendActivationMail($user) 
    { 

     if ($user->activated || !$this->shouldSend($user)) { 
      return; 
     } 

     $token = $this->activationRepo->createActivation($user); 

     $link = route('user.activate', $token); 
     $message = sprintf('Activate account <a href="%s">%s</a>', $link, $link); 

     $this->mailer->raw($message, function (Message $m) use ($user) { 
      $m->to($user->email)->subject('Activation mail'); 
     }); 


    } 

    public function activateUser($token) 
    { 
     $activation = $this->activationRepo->getActivationByToken($token); 

     if ($activation === null) { 
      return null; 
     } 

     $user = User::find($activation->user_id); 
     //Below is line 53. 
     $user->activated = true; 

     $user->save(); 

     $this->activationRepo->deleteActivation($token); 

     return $user; 

    } 

    private function shouldSend($user) 
    { 
     $activation = $this->activationRepo->getActivation($user); 
     return $activation === null || strtotime($activation->created_at) + 60 * 60 * $this->resendAfter < time(); 
    } 

} 

Сообщение об ошибке

ErrorException в ActivationService.php линии 53: Создание объекта по умолчанию из пустого значения

Line 53 из код выше:

$user->activated = true; 

Как я могу решить проблему?

+2

'$ user = User :: find ($ activation-> user_id);' возвращает 'false' или' null', возможно. Вы пытались сбросить '$ activation-> user_id'? Почему бы вам не использовать 'Auth :: user() -> id' вместо этого? – Mihailo

ответ

1

Проблема, скорее всего, потому что $user = User::find($activation->user_id); возвращает нуль или ложные.

Когда вы оказываетесь в таких ситуациях всегда пытаются сбрасывать переменную, где проблема возникает, в этом случае dd($activation->user_id)

Я бы предложил использовать вместо Auth::user()->id.

Смежные вопросы