Привет, мне нужно сравнить два объекта в доктрине. У меня есть клиентский репозиторий и сущность. Это мой код,
public function index(CarAdRepository $carAdRepository, CustomerRepository $customerRepository): Response {
$cus = $customerRepository->findAll();
$customer = new Customer();
$customer->setTitle('Mr');
$customer->setName('aaa');
$customer->setLastName('bbb');
if ($customer == $cus[0]){
echo 'ddd';
}else{
echo 'no';
}
}
в моей таблице у меня есть эти значения,
Но я всегда получаю нет. Было бы здорово, если бы кто-нибудь помог




Doctrine реализует шаблон IdentityMap, который гарантирует, что вы всегда получаете объект такой же для одной и той же строки базы данных, но только если он был загружен из карты идентификации.
В вашем случае вы сравниваете некоторый произвольный объект с объектом, извлеченным из базы данных, с помощью оператора сравнения PHP. Другими словами, вы проверяете, равны ли 2 объекта, но в PHP нет такой встроенной функции.
Вы должны реализовать функцию сравнения объектов самостоятельно, чтобы достичь своей цели, потому что фактическая логика сравнения может отличаться.
Обновлено: Простейшим примером сравнения в вашем случае является сравнение свойств по свойствам:
private function compare(Customer $a, Customer $b)
{
return $a->getTitle() === $b->getTitle() &&
$a->getName() === $b->getName() &&
$a->getLastName() === $b->getLastName();
}
Также может быть целесообразно переместить этот метод непосредственно в объект Customer с именем, например, isEqual().
Также можно реализовать более общий подход, используя отражение, но это может привести к определенному уровню сложности в случае, если потребуется провести какое-то нетривиальное сравнение.
Большое спасибо, но есть ли пример, который я могу просмотреть? Извините, я немного новичок в этом :(