Проблема получения текущего идентификатора пользователя в модели laravel? - PullRequest
0 голосов
/ 24 января 2020

Модель:

class Cart extends Model
{

   public static function cart()
   {
     $id = \Auth::user()->id;
     $count = Cart::where('user_id' , $id)->sum('quantity');
     return $count;
   }
}

Но это показывает Попытка получить свойство 'id' не-объекта на странице просмотра. Пожалуйста, помогите мне, как решить эту проблему?

Ответы [ 4 ]

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

Вы можете использовать Auth :: User () -> id; чтобы получить текущий идентификатор пользователя.

0 голосов
/ 24 января 2020

Ваша ошибка не зависит от:

 $id = \Auth::user()->id;

Все нормально. Ваша проблема в том, что вы вызываете запись Cart в этой строке:

 $count = Cart::where('user_id' , $id)->sum('quantity');

Используйте dd ($ id) и dd ($ count), чтобы увидеть, что, вероятно, нет записи Cart с эта функция в базе данных. :)

0 голосов
/ 24 января 2020

Попробуйте этот проход $userId, а не auth()
. Не рекомендуется вызывать функцию аутентификации внутри модели, поскольку аутентификация применяется к контроллеру, поэтому с контроллера вы можете отправить идентификатор пользователя аутентификации.

модель будет также работает, но хорошая практика - держать аутентификацию внутри вашего контроллера

class Cart extends Model
{

   public static function cart($userId)
   {
     $count = Cart::where('user_id' , $userId)->sum('quantity');
     return $count;
   }
}
``
0 голосов
/ 24 января 2020

У вас есть несколько вариантов:

1) use Illuminate\Support\Facades\Auth;

   Auth::user()->id;

2) auth()->user()->id;

3) if (Auth::check()) 
   {
     //check if a user is logged in, now get the id
      Auth::user()->id
   }

4) Auth::id();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...