В моем проекте Symfony 4 у меня есть Entity Class
Users
со свойствами firstName
и familyName
, и я хотел бы добавить что-то вроде fullName
, которое будет объединением этих двух, но без добавления столбца в DB. Мне это нужно, например, для шоу в front-end и фильтрации в таблицах. Но иногда также необходимо разделение.
Определение класса:
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity
*/
class Users
{
/**
* @var string
*
* @ORM\Column(name="FIRST_NAME", type="string", length=25, nullable=false)
*/
private $firstName;
/**
* @var string
*
* @ORM\Column(name="FAMILY_NAME", type="string", length=25, nullable=false)
*/
private $familyName;
// Other properties and getters + setters
}
Когда я добавляю просто свойство fullName
с геттерами и сеттерами:
private $fullName;
public function getFullName():?string
{
return $this->getFamilyName().', '.$this->getFirstName();
}
public function setFullName(string $fullName): self{
return $this;
}
и используйте его в QueryBuilder
как
createQueryBuilder()->select('u.fullName')->from('App\Entity\Users','u')->where('u.id = ?')...
тогда я получил эту ошибку:
'fullName FROM': Error: Class App\Entity\Users has no field or association named fullName
Есть ли простой способ, как сказать Доктрине, что это свойство исходит не из БД, а существует как "виртуальный столбец"? Я знаю, что могу использовать функцию DQL Concat
и т. Д., Но мне это нужно. И с моей точки зрения это немного лучше.