Когда я выбираю объект по идентификатору с помощью метода find
, например
$manager->getRepository(Country::class)->find(1);
Данный объект выглядит странно со строкой Id вместо int
Country {#41030 ▼
+__isInitialized__: false
-id: "1"
-name: ""
}
Но когда я получаю ту же страну с findOneBy
$manager->getRepository(Country::class)->findOneBy(['id' => 1]);
Я получаю тот же объект с правильным типом идентификатора
Country {#41030 ▼
+__isInitialized__: true
-id: 1
-name: "France"
}
Если я попробую метод find
с другой сущностью, у возвращенного объекта будет идентификатор с правильным типом.
Я пытаюсь найти различия между этими двумя сущностями, но безуспешно
Странный тип возврата вызывается, когда я использую метод find
в Слушателе, который использует LifecycleEventArg
getEntityManager()
менеджер сущностей.
У вас уже есть такой случай?
EDIT
Есть определение Country
сущности
/**
* @ORM\Table
* @ORM\Entity
* @DoctrineAssert\UniqueEntity("name")
*/
class Country
{
/**
* @var int
*
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=64, unique=true)
* @Assert\NotBlank
* @Assert\Length(max=64)
*/
private $name = '';
public function __toString(): string
{
return $this->id.' - '.$this->name;
}
public function getId(): ?int
{
return $this->id;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getName(): string
{
return $this->name;
}
}