Класс ‘… \ Entity \ User’ не имеет метода ‘getGenderList’

Я работаю с Sonata Admin bundle для бэкэнда моего сайта.

мой таблица пользователей в моей базе выглядит так:

id (PK)
username
email
password
salt
last_login
created_at
company_id (FK)

мой Пользовательская сущность выглядит следующим образом:

<?php

namespace MyBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
//use Sonata\UserBundle\Entity\BaseUser as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* User
*
* @ORM\Table(name="user", indexes={@ORM\Index(name="fk_user_company1_idx", columns={"company_id"})})
* @ORM\Entity
*/
class User extends BaseUser
{
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime", nullable=true)
*/
protected $createdAt;

/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;

/**
* @var \MyBundle\Entity\Company
*
* @ORM\ManyToOne(targetEntity="MyBundle\Entity\Company")
* @ORM\JoinColumns({
*   @ORM\JoinColumn(name="company_id", referencedColumnName="id")
* })
*/
protected $company;

public function __construct()
{
parent::__construct();
// your own logic
}

/**
* Set username
*
* @param string $username
* @return User
*/
public function setUsername($username)
{
$this->username = $username;

return $this;
}

/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}

/**
* Set email
*
* @param string $email
* @return User
*/
public function setEmail($email)
{
$this->email = $email;

return $this;
}

/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}

/**
* Set password
*
* @param string $password
* @return User
*/
public function setPassword($password)
{
$this->password = $password;

return $this;
}

/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}

/**
* Set salt
*
* @param string $salt
* @return User
*/
public function setSalt($salt)
{
$this->salt = $salt;

return $this;
}

/**
* Get salt
*
* @return string
*/
public function getSalt()
{
return $this->salt;
}

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set company
*
* @param \MyBundle\Entity\Company $company
* @return User
*/
public function setCompany(\MyBundle\Entity\Company $company = null)
{
$this->company = $company;

return $this;
}

/**
* Get company
*
* @return \MyBundle\Entity\Company
*/
public function getCompany()
{
return $this->company;
}
}

Теперь, когда я перехожу на страницу «Изменить учетную запись», я получаю следующую ошибку:

Warning: call_user_func() expects parameter 1 to be a valid callback, class 'MyBundle\Entity\User' does not have a method 'getGenderList'

У меня нет пола в моей пользовательской таблице в моей базе данных. Как я могу это исправить?

ОБНОВИТЬ:

Когда я меняюсь use FOS\UserBundle\Entity\User as BaseUser; в use Sonata\UserBundle\Entity\BaseUser as BaseUser;, Тогда я получаю следующую ошибку:

Возникла исключительная ситуация при выполнении ‘SELECT t0.username AS username1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS включено5, t0.salt AS salt6, t0.password AS пароль7, t0 .last_login AS last_login8, t0.locked AS заблокирован9, t0.expired AS устарел10, t0.expires_at AS expires_at11, t0.confirmation_token AS translation_token12, t0.password_requested_at AS password_requested_at13, t0.roles_перечисленный_0 AS credentials_expire_at16, t0.created_at AS made_at17, t0.updated_at AS updated_at18, t0.date_of_birth AS date_of_birth19, t0.firstname AS имя_20, t0.lastname AS фамилия21, t0.website AS сайт22, t23.genia24, t0.biography , t0.locale AS locale25, t0.timezone AS timezone26, t0.phone AS phone27, t0.facebook_uid AS facebook_uid28, t0.facebook_name AS facebook_name29, t0.facebook_data AS facebook_data30, t0.twitter_ uid AS twitter_uid31, t0.twitter_name AS twitter_name32, t0.twitter_data AS twitter_data33, t0.gplus_uid AS gplus_uid34, t0.gplus_name AS gplus_name35, t0.gplus_data AS gplus_data36, t0.tote_t0., t0. id39, t0.company_id AS company_id40 ОТ пользователя t0 ГДЕ t0.id =? LIMIT 1 ‘с параметрами 1:

SQLSTATE [42S22]: столбец не найден: 1054 неизвестный столбец ‘t0.updated_at’
в «списке полей»

Как я мог это исправить?

3

Решение

Ваш класс User расширяет класс от FOSUserBundle вместо SonataUserBundle. Вы должны изменить это:

//use FOS\UserBundle\Entity\User as BaseUser;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;

Проверьте https://github.com/sonata-project/SonataUserBundle/issues/459

Редактировать: если вы не хотите использовать этот класс (в нем много бесполезных полей), вам нужно создать свой собственный класс администратора для вашей сущности User. На этой странице есть полное руководство для этого: http://m2mdas.github.io/blog/2013/11/18/integrate-fosuserbundle-and-sonatauserbundle-easily/

Обновление после вашего обновления:
после изменения класса, который расширяет ваша сущность, вы должны обновить схему базы данных, чтобы она соответствовала вашей модели:

php app/console doctrine:schema:update --force
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]