Этот код не имеет большого смысла для меня;ни условие, ни вложенные MyEntity
объекты.
То, что вы, вероятно, хотите, - это искать и извлекать объект или создавать новый объект, если ни один не найден.Это предполагает, что имена и фамилии на самом деле не являются экземплярами того же класса.
Редактировать: Обратите внимание, что вам нужны фактические имена и фамилии, чтобы найти сущность вхранилище.
Так что-то вроде:
public function import($firstName, $lastName, $newFirstName, $newLastName)
{
# Get entity from the repository using the current values
$new = $this->getMyEntityRepository()->findOneBy([
'firstName' => $firstName,
'lastName' => $lastName,
]);
# If no entity is found, create a new one
if(!$new instanceof MyEntity) {
$new = new MyEntity();
$this->em->persist($new);
}
# Update the existing or new entity with the new values
$new->setFirstName($newFirstName);
$new->setLastName($newLastName);
$this->em->flush();
}
Кстати, переименование вашего класса и переменных в то, что они на самом деле представляют, облегчит обнаружение таких логических ошибок.