Пользователь не должен быть участником
Ваша первая проблема здесь:
public function __construct(User $user)
Вы вводите пользователя, не зная, какого пользователя использовать, если только это не происходит из промежуточного программного обеспечения. Таким образом, конструктор не должен принимать пользователя и защищенного члена. Если вы действительно хотите, чтобы он был защищенным членом, вы могли бы сделать следующее:
public function __construct()
{
$this->user = Auth::user();
}
Но поскольку у вас есть Auth::user()
, он вам не нужен.
where
на модели является статической
У вас есть
$this->user->where('id', Auth::user()->id)->value('password')
Функция where
модели - это статическая функция, которую нельзя вызывать для отдельного объекта. Вместо этого вы должны вызвать его, используя оператор определения объема (::
). На этом этапе большинство версий PHP должны выдавать ошибку. Правильный способ получить хэш пароля текущего пользователя из базы данных:
$hash = Auth::user()->password;
Если бы у вас был идентификатор, вы могли бы:
$hash = User::where('id','=',$userId)->get()->password;
Если вы сохранили пользователя в качестве участника (против рекомендации), но сделали это, как в предыдущем разделе этого ответа, вы можете:
$hash = $this->user->password
Почему?
Наконец, модуль Auth от Laravel в современных версиях уже позаботился об этом для вас в app\Http\Controllers\Auth
. Зачем изобретать велосипед?