2017-05-15 13 views
0

使用ripcord XML-RPC客戶端並進行如下所示的調用時,如何告知它由哪個字段對記錄進行排序?Odoo/PHP:如何在API調用中設置「order by」?

$models = ripcord::client($cfg['url'] . '/xmlrpc/2/object'); 
$srch = $models->execute_kw($cfg['db'], $cfg['uid'], $cfg['pw'], 'account.move.line', 'search_read', array(array(array('account_id', '=', 174), array('date', '>=', '2016-01-01')))); 

使用Odoo 9社區版。

+0

AFAIK這裏沒有'order by'。但是,您可以使用[usort](http://php.net/manual/en/function.usort.php)/ [uasort](http://php.net/manual/en/function.uasort.php)要做到這一點 –

回答

0

signature of search_read是:

def search_read(self, cr, uid, domain=None, fields=None, offset=0, limit=None, order=None, context=None): 

我不是很熟悉PHP,但這樣的事情應該工作:

$models = ripcord::client($cfg['url'] . '/xmlrpc/2/object'); 
$srch = $models->execute_kw(
    $cfg['db'], 
    $cfg['uid'], 
    $cfg['pw'], 
    'account.move.line', 
    'search_read', 
    array(
     array(
      array('account_id', '=', 174), 
      array('date', '>=', '2016-01-01') 
     ), 
     NULL, 
     NULL, 
     NULL, 
     'date desc, id', 
    ) 
); 

我們通過NULLfieldsoffsetlimit使用默認值和order是要排序的字段的逗號分隔列表。在上面的例子中,它將按照降序排列date,然後按id(如果某些移動的行具有相同的日期)按升序排列返回移動行。