Zend DB Select : ORDER BY FIELD('id',some_array) - how?

srgb picture srgb · Jul 7, 2011 · Viewed 11k times · Source

How would you write the following query in Zend framework?

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

I just need the "Order by" part :)

Thanks!

Answer

Marcin picture Marcin · Jul 7, 2011

What about this:

      $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());

Results in:

string 'SELECT `table_name`.* FROM `table_name` ORDER BY FIELD(field_name, 'Small','Medium','Large')' (length=92)