Для тех, кто хочет использовать аутентификацию Laravel с проверкой электронной почты , а также хочет расширить класс User с помощью модели , тогда они столкнутся с такой ситуацией, когда класс уже будет выглядеть примерно так:this:
class User extends Authenticatable implements MustVerifyEmail {...}
Чтобы использовать отношения модели в Laravel, вам нужно расширить User с Model, например, так:
class User extends Model
{
//
}
Это проблема, когда PHP позволяет классу толькопростираться от одного другого класса.Таким образом, мы можем либо перейти от Authenticatable, либо от Model
@ matticustard уже упоминалось, что «Authenticatable уже расширяет Model».Следовательно, мы можем просто расширить Model, и это будет просто работать.
Если у вас реализован MustVerifyEmail, то внесение вышеуказанных изменений приведет к ошибке, поскольку вы не объявите следующие методы: 'hasVerifiedEmail', 'markEmailAsVerified', 'sendEmailVerificationNotification 'и' getEmailForVerification '.
Для этой проблемы просто определите методы следующим образом:
/**
* Determine if the user has verified their email address.
*
* @return bool
*/
public function hasVerifiedEmail()
{
return ! is_null($this->email_verified_at);
}
/**
* Mark the given user's email as verified.
*
* @return bool
*/
public function markEmailAsVerified()
{
return $this->forceFill([
'email_verified_at' => $this->freshTimestamp(),
])->save();
}
/**
* Send the email verification notification.
*
* @return void
*/
public function sendEmailVerificationNotification()
{
$this->notify(new Notifications\VerifyEmail);
}
/**
* Get the email address that should be used for verification.
*
* @return string
*/
public function getEmailForVerification()
{
return $this->email;
}
ПРИМЕЧАНИЕ. Приведенный выше код просто взят из признака, определенного в Illuminate \ Auth \ MustVerifyEmail;
Это решение сработало для меня, и если у вас есть какие-либо предложения или другое решение, не стесняйтесь отвечать / комментировать ниже.