У нас была такая же проблема в проекте, над которым мы работаем.Запрос, который вы пытаетесь выполнить, очень похож на этот вопрос , за исключением того, что вы пытаетесь сделать это на DQL, что делает его еще сложнее.Я думаю (но я могу ошибаться), что DQL не разрешает такого рода запросы, и вы можете достичь ожидаемого результата с помощью собственного SQL запроса со всеми вытекающими отсюда предостережениями.
В итоге мы настоятельно рекомендуем вам сделать текущий статус собственностью вашего Order
.Это позволяет легко и быстро запрашивать запросы, не требуя объединения.Изменение действительно безболезненно:
class Order
{
/**
* @ManyToOne(targetEntity="OrderStatus")
*/
protected $status;
/**
* @OneToMany(targetEntity="OrderStatus")
*/
protected $statuses;
public function setStatus($status)
{
$orderStatus = new OrderStatus($this, $status);
$this->statuses->add($orderStatus);
$this->status = $orderStatus;
}
}
$status
также может быть простым string
свойством, если ваш OrderStatus
в основном состоит из строки состояния и даты;код станет:
class Order
{
/**
* @Column(type="string")
*/
protected $status;
// ...
public function setStatus($status)
{
// ...
$this->status = $status;
}
}