Doctrine DBAL setParameter() với gía trị mảng array

0 k thích

Mình đang dùng Doctrine DBAL và gặp một vấn đề với QueryBuilder:

$builder = $this->getConnection()->getQueryBuilder();
$builder->select(['id','name','type'])
     ->from('table')
     ->where('id='.(int)$value)
     ->setMaxResults(1);
$builder->andWhere($builder->expr()->in('type', ['first','second']));

echo(builder->getSQL());

$data = $builder->execute()->fetchRow();

SQL sinh ra như sau:

SELECT id, name, type FROM table WHERE (id=149) AND (type IN (first,second)) LIMIT 1

Vấn đề là mình muốn đoạn type IN (first,second) được encode thành kiểu string như type IN ('first','second'). Ai biết cách nào chuẩn không ?

avatar đã hỏi ngày 24 tháng 7 bởi anhweasley (1,160 điểm)  

1 Câu trả lời

0 k thích

Thử như này xem:

$builder->andWhere('type IN (:string)');
$builder->setParameter('string', array('first','second'), \Doctrine\DBAL\Connection::PARAM_STR_ARRAY);

Nhưng nếu bạn dùng prepare statement thì nó sẽ không được vì Doctrine không hỗ trợ khi ta prepare statement. Lúc đó cách tốt nhất là chèn value vào chuỗi SQL và không setValue hay setParameter

avatar trả lời ngày 24 tháng 7 bởi admin (2,590 điểm)  
...