Tôi có một đối tượng ArrayCollection của các đối tượng trạng thái mà bây giờ tôi muốn sử dụng làm tham số IN trong mệnh đề WHERE cho truy vấn doctrine. Đây là mã truy vấn của tôi:Sử dụng tính năng arraycollection làm tham số trong truy vấn doctrine
$query = $repository->createQueryBuilder('r')
->join('r.applicationStatus', 's')
->where('r.submitted IS NOT NULL')
->andWhere('r.created >= :date')
->andWhere('r.created < :date2')
->andWhere('s IN (:status)') // Here's the In statement
->orderBy('r.created', 'DESC')
->setParameter('date', $appSearch->getDateFrom())
->setParameter('date2', $end)
->setParameter('status', $appSearch->getApplicationStatus()) //Here's the array collection
->getQuery();
Tuy nhiên, truy vấn không trả về 0 bản ghi. Để nó hoạt động, tôi phải lặp lại thủ công thông qua mảng $ appSearch-> getApplicationStatus() arraycollection và lấy id trạng thái trong một mảng mới cho truy vấn để mang lại kết quả chính xác vào lúc này - điều này cảm thấy rất không hiệu quả.
Tôi đang làm gì sai?
lớp ArrayCollection có (rất thuận tiện) 'toArray' phương pháp để làm điều tương tự. – spdionis
Thật đáng tiếc, vì Doctrine * có thể * chấp nhận một đối tượng như một tham số cho phép so sánh eq(), nhưng dường như không giống như một mảng các đối tượng. – darkbluesun