Sử dụng Symfony và Doctrine với trình tạo truy vấn DQL, tôi cần tùy ý thêm một số điều kiện WHERE với các tham số, với một số nếu điều kiện kiểm tra.Trình tạo truy vấn Df của Symfony và Doctrine: cách sử dụng nhiều setParameters bên trong nếu điều kiện kiểm tra?
Pseudo mã ví dụ:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb = $qb
->select('SOMETHING')
->from('SOMEWHERE')
->where('SOME CONDITIONS');
if (SOME CHECK) {
$qb
->andWhere('field1 = :field1')
->andWhere('field2 = :field2')
->setParameters([
'field1' => $myFieldValue1,
'field2' => $myFieldValue2,
]);
} else {
$qb
->andWhere('field1 = :field1')
->setParameters([
'field1' => $myOtherFieldValue1,
]);
}
Bắt lỗi như:
số tham số không hợp lệ: số biến ràng buộc không khớp với số của thẻ
Quá ít thông số: các định nghĩa truy vấn Tham số X nhưng bạn chỉ bị ràng buộc Y
Quá nhiều tham số: truy vấn xác định X thông số và bạn bị ràng buộc Y
trong điều kiện đặt ra câu lệnh if làm cách nào để bạn chuyển giá trị trường? có lẽ bạn ghi đè tham số đầu tiên. – Matteo
đó chỉ là một ví dụ, xem câu trả lời của tôi bên dưới – ShinDarth