将Cakephp 1.3中的find('list')与自定义字段一起使用
我在CakePHP1.3项目中工作。使用“查找列表”从数据库检索某些数据时遇到问题。在上次更改之前,我有以下代码:将Cakephp 1.3中的find('list')与自定义字段一起使用,php,cakephp,Php,Cakephp,我在CakePHP1.3项目中工作。使用“查找列表”从数据库检索某些数据时遇到问题。在上次更改之前,我有以下代码: $listaHabilidades = $this->Habilidad->find('list',array('fields'=>array('id','habilidad'),'order'=>array('habilidad')))); 此命令提供下一个数组: Array ( [40] => Bicicleta [42] =&
$listaHabilidades = $this->Habilidad->find('list',array('fields'=>array('id','habilidad'),'order'=>array('habilidad'))));
此命令提供下一个数组:
Array
(
[40] => Bicicleta
[42] => enganches de poleas
[28] => Escalada
[43] => transfer
[41] => 4x4
[53] => Administración Linux
[72] => Ángeles
[59] => Baile Flamenco
[57] => Baloncesto
[39] => Barranquismo
[66] => Cante Flamenco
[30] => Conducción
[52] => Consola Linux
[80] => cuarta prueba
[75] => Demonios
[84] => Esgrima
[58] => Futbol
[76] => Limpiar
[77] => Limpiar2
[54] => Linux
[27] => Montañismo
[60] => MS Office
[65] => Natación
[45] => Patinaje
[56] => PC
[78] => probar
[44] => Programación
[82] => Protocolo
[81] => quinta prueba
[63] => Tenis
[79] => tercera prueba
[83] => Triatlón
[55] => W8
[51] => XP
[64] => Zapateado
)
Array
(
[41] =>
[53] =>
[72] =>
[59] =>
[57] =>
[39] =>
[40] =>
[66] =>
[30] =>
[52] =>
[80] =>
[75] =>
[42] =>
[28] =>
[84] =>
[58] =>
[76] =>
[77] =>
[54] =>
[27] =>
[60] =>
[65] =>
[45] =>
[56] =>
[78] =>
[44] =>
[82] =>
[81] =>
[63] =>
[79] =>
[43] =>
[83] =>
[55] =>
[51] =>
[64] =>
)
但我遇到了一个问题,因为数据在字段“habilidad”的开头可以有空格,我希望在没有空格的情况下获取数据,并且在没有空格的情况下对数据进行排序。因此,我将命令更改为:
$listaHabilidades = $this->Habilidad->find('list',array('fields'=>array('id','trim(Habilidad.habilidad)'),'order'=>array('trim(Habilidad.habilidad)'))));
它给了我下一个数组:
Array
(
[40] => Bicicleta
[42] => enganches de poleas
[28] => Escalada
[43] => transfer
[41] => 4x4
[53] => Administración Linux
[72] => Ángeles
[59] => Baile Flamenco
[57] => Baloncesto
[39] => Barranquismo
[66] => Cante Flamenco
[30] => Conducción
[52] => Consola Linux
[80] => cuarta prueba
[75] => Demonios
[84] => Esgrima
[58] => Futbol
[76] => Limpiar
[77] => Limpiar2
[54] => Linux
[27] => Montañismo
[60] => MS Office
[65] => Natación
[45] => Patinaje
[56] => PC
[78] => probar
[44] => Programación
[82] => Protocolo
[81] => quinta prueba
[63] => Tenis
[79] => tercera prueba
[83] => Triatlón
[55] => W8
[51] => XP
[64] => Zapateado
)
Array
(
[41] =>
[53] =>
[72] =>
[59] =>
[57] =>
[39] =>
[40] =>
[66] =>
[30] =>
[52] =>
[80] =>
[75] =>
[42] =>
[28] =>
[84] =>
[58] =>
[76] =>
[77] =>
[54] =>
[27] =>
[60] =>
[65] =>
[45] =>
[56] =>
[78] =>
[44] =>
[82] =>
[81] =>
[63] =>
[79] =>
[43] =>
[83] =>
[55] =>
[51] =>
[64] =>
)
如何在没有循环的情况下修剪列表?您可以在模型中添加一个:
public $virtualFields = array(
't_habilidad' => 'LTRIM(Habilidad.habilidad)'
);
然后使用
$listaHabilidades = $this->Habilidad->find('list', array('fields'=>array('id','habilidad'), 'order' => array('t_habilidad'))));
您是否可以向您的模型中添加:
public $virtualFields = array(
't_habilidad' => 'LTRIM(Habilidad.habilidad)'
);
然后使用
$listaHabilidades = $this->Habilidad->find('list', array('fields'=>array('id','habilidad'), 'order' => array('t_habilidad'))));
不完全确定CakePHP如何在内部生成查询,但您可以在检索后在php中对其进行修剪
$listaHabilidades = $this->Habilidad->find('list',array('fields'=>array('id','habilidad'),'order'=>array('habilidad'))));
$listaHabilidades = array_map('trim', $listaHabilidades);
// voila
不完全确定CakePHP如何在内部生成查询,但您可以在检索后在php中对其进行修剪
$listaHabilidades = $this->Habilidad->find('list',array('fields'=>array('id','habilidad'),'order'=>array('habilidad'))));
$listaHabilidades = array_map('trim', $listaHabilidades);
// voila
您可以使用修剪db表的特定字段。更新habilidads集合habilidad=TRIMhabilidad,其中1=1,您也可以从sql最终列表中进行修剪,但如果您更早地修剪值,这将更有意义,因为这将使查询更快。我知道,但是如果我想使用任何mysql函数而不修改存储的数据,会发生什么?如何检索数据?您可以使用修剪db表的特定字段。更新habilidads集合habilidad=TRIMhabilidad,其中1=1,您也可以从sql最终列表中进行修剪,但如果您更早地修剪值,这将更有意义,因为这将使查询更快。我知道,但是如果我想使用任何mysql函数而不修改存储的数据,会发生什么?如何检索数据?