Zend DB Select: ORDER BY FIELD ('id', some_array) - как? - PullRequest
14 голосов
/ 07 июля 2011

Как бы вы написали следующий запрос в Zend Framework?

SELECT * FROM table_name ORDER BY FIELD(field_name, 'Small','Medium','Large');

Мне просто нужна часть "Order by":)

Спасибо!

Ответы [ 3 ]

26 голосов
/ 07 июля 2011

Что по этому поводу:

      $db = Zend_Db_Table::getDefaultAdapter();

      $select = $db->select();

      $select->from('table_name')
              ->order(new Zend_Db_Expr("FIELD(field_name, 'Small','Medium','Large')"));


      var_dump($select->assemble());

Результат:

string 'SELECT `table_name`.* FROM `table_name` ORDER BY FIELD(field_name, 'Small','Medium','Large')' (length=92)
1 голос
/ 07 июля 2011

Я думаю, что вы должны сделать:

$db = Zend_Db::factory( ...options... );
$select = $db->select()
 ->from(table_name)
 ->order(new Zend_Db_Expr("FIELD(field_name, 'Small','Medium','Large')")));
1 голос
/ 07 июля 2011
$select->order(new Zend_Db_Expr('FIELD(field_name, 'Small','Medium','Large')'));
...