У меня есть следующие объекты:
Автомобиль - справочная таблица, в которой хранятся связи между следующими объектами. Создайте подмодель модели
Теперь на основе "года" и "марки" транспортного средства.Я пытаюсь вернуть доступные подмодели или ничего не вернуть, если они недоступны для данного автомобиля.В моем примере $ make = 'Mazda' и $ year = '2016'
По какой-то причине следующий запрос возвращает подмодели, принадлежащие Kia: D, когда он не должен их возвращать.Что я делаю не так?
$qb = $this->createQueryBuilder('submodel');
$qb->select('submodel', 'vehicles')
->join('submodel.vehicles', 'vehicles')
->join('vehicles.make', 'make')
->Where('make.makeName = :makeName')->setParameter('makeName', $makeName)
->AndWhere('vehicles.year = :year')->setParameter('year', $year);
$results = $qb->getQuery()->getResult();
Сущность транспортного средства:
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="create_time", type="datetime")
*/
protected $createTime;
/**
* @var \DateTime
*
* @ORM\Column(name="update_time", type="datetime")
*/
protected $updateTime;
/**
* @var integer
*
* @ORM\Column(name="year", type="integer", length=4)
*/
private $year;
/**
* @ORM\ManyToOne(targetEntity="PhilipsMake", inversedBy="vehicles")
* @ORM\JoinColumn(name="make_id", referencedColumnName="id")
*/
private $make;
/**
* @ORM\ManyToOne(targetEntity="PhilipsModel", inversedBy="vehicles")
* @ORM\JoinColumn(name="model_id", referencedColumnName="id")
*/
private $model;
/**
* @ORM\ManyToOne(targetEntity="PhilipsSubmodel", inversedBy="vehicles")
* @ORM\JoinColumn(name="submodel_id", referencedColumnName="id")
*/
private $submodel;
/**
* @ORM\ManyToOne(targetEntity="PhilipsBodytype")
* @ORM\JoinColumn(name="bodytype_id", referencedColumnName="id")
*/
private $bodytype;
/**
* @ORM\ManyToOne(targetEntity="PhilipsNumberOfDoors")
* @ORM\JoinColumn(name="number_of_doors_id", referencedColumnName="id")
*/
private $numberOfDoors;
/**
* @ORM\ManyToOne(targetEntity="PhilipsQualifier")
* @ORM\JoinColumn(name="qualifier", referencedColumnName="id")
*/
private $qualifier;
/**
* @ORM\ManyToMany(targetEntity="PhilipsLight", mappedBy="vehicles")
*/
private $lights;
Субмодельная сущность:
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="create_time", type="datetime")
*/
protected $createTime;
/**
* @var \DateTime
*
* @ORM\Column(name="update_time", type="datetime")
*/
protected $updateTime;
/**
* @var string
*
* @ORM\Column(name="submodel_name", type="string", length=100, nullable=true, unique=true)
*/
private $submodelName;
/**
* @ORM\OneToMany(targetEntity="PhilipsVehicle", mappedBy="make", orphanRemoval=true, cascade={"persist"})
*/
protected $vehicles;