2016-07-11 62 views
0
$this->find('list', [ 
     'keyField' => 'id', 
     'valueField' => 'LOWER(code)', 
     'conditions' => ['service_id' => $service_id], 
     'hydrate' => false 
    ])->toArray(); 

我需要從表中爲小寫選擇價值,但是當我申請上面的代碼,它返回像空值:CakePHP的與valuefield爲小寫3查找列表

array(
    '1' => 
    '2' => 
    '3' => 
) 

我不想使用虛擬領域。有什麼我失蹤?

我也試過下面的方式,但無法得到想要的結果。

'valueField' => function($e){ 
    return $e->get('LOWER(code)'); 
} 

回答

0

你可以試試這個代碼:

$results = $this->Model_name->find('all') 
    ->where(array('service_id' => $service_id)) 
    ->map(function ($row) { 
    $row->lowerCode = strtolower($row->code); 
    return $row; 
    }) 
    ->combine('id', 'lowerCode') 
    ->toArray(); 

    //debug($results); 
0

也許這是你在尋找什麼:

$this->find('list', [ 
    'keyField' => 'id', 

    //set code field to lowercase 
    'valueField' => function($q){ return strtolower($q->code); }, 

    'conditions' => ['service_id' => $service_id], 
    'hydrate' => false 
])->toArray();