Я пытаюсь получить все данные, хранящиеся в базе данных.
Это мой журнал, когда я пытаюсь отправить форму.
[2018-05-13 02:43:57] doctrine.DEBUG: SELECT u0_.id AS id_0, u0_.username AS username_1, u0_.password AS password_2, u0_.roles AS roles_3, u0_.nickname AS nickname_4, u0_.last_access AS last_access_5 FROM user u0_ WHERE u0_.username = ? ["admin@hime.org"] []
[2018-05-13 02:43:57] security.INFO: Authentication request failed. {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\AuthenticationServiceException(code: 0): Notice: unserialize(): Error at offset 0 of 4 bytes at /home/panthera/Repository/Private/PHP/Hime2/vendor/symfony/security/Core/Authentication/Provider/DaoAuthenticationProvider.php:85, ErrorException(code: 0): Notice: unserialize(): Error at offset 0 of 4 bytes at /home/panthera/Repository/Private/PHP/Hime2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php:62)"} []
Моя форма имеет 2 поля - адрес электронной почты и пароль, но в базе данных я храню гораздо больше.
ID (интермедиат),
имя пользователя (строка),
пароль (строка),
роль (массив),
ник (строка),
last_access (DateTime)
Я не уверен, вызвана ли эта проблема типом массива, но когда я исключил его, проблема исчезла. Но я был бы очень признателен, если бы мог использовать его.
в качестве сущности я использую автоматически созданный make: entity
Я загружаю данные этим методом
public function loadUserByUsername($username):User
{
return $this->createQueryBuilder('user')
->andWhere('user.username = :username')
->setParameter('username', $username)
->getQuery()
->getOneOrNullResult();
}
Я пытался отладить код, но когда я помещаю var_dump перед возвратом, ничего не происходит. Но в противном случае, когда я использую "die", это работает .. может быть, $ username имеет значение null?
Я действительно потерян. Спасибо за любой совет ..
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $username;
/**
* @ORM\Column(type="string", length=255)
*/
private $password;
/**
* @ORM\Column(type="array")
*/
private $roles;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $nickname;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $last_access;
public function getId()
{
return $this->id;
}
public function getUsername(): ?string
{
return $this->username;
}
public function setUsername(string $username): self
{
$this->username = $username;
return $this;
}
public function getPassword(): ?string
{
return $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
public function getRoles(): ?array
{
return $this->roles;
}
public function setRoles(array $roles): self
{
$this->roles = $roles;
return $this;
}
public function getNickname(): ?string
{
return $this->nickname;
}
public function setNickname(?string $nickname): self
{
$this->nickname = $nickname;
return $this;
}
public function getLastAccess(): ?\DateTimeInterface
{
return $this->last_access;
}
public function setLastAccess(?\DateTimeInterface $last_access): self
{
$this->last_access = $last_access;
return $this;
}
public function getSalt()
{
// TODO: Implement getSalt() method.
return null;
}
public function eraseCredentials()
{
// TODO: Implement eraseCredentials() method.
return null;
}
}
Нет ответа? (
EDIT:
Что ж, я изменяю это, потому что Symfony что-то создает, и тогда его нельзя использовать без дополнительного кода, что излишне сложно. Поэтому я использовал строку, которая разделена на ";" и тогда я отфильтрую это. Это проще :)