cakephp find list

后端 未结 5 664
陌清茗
陌清茗 2020-12-31 09:55

Hi I want to be able to generate a list using find so that I can use in select helper. but there is a problem. i want too fetch id,name(first + last). so how can I achieve i

5条回答
  •  旧时难觅i
    2020-12-31 10:05

    In my case, Set::combine was the way to go, since I had to deal with concatenation of fields in associated models, like:

    $bancos_enteros = $this->Financiacion->Banco->find('all', array(
      'fields' => array('Empresa.codigo_contable','Empresa.nombre_corto', 'Banco.id'),
      'order' => array('Empresa.codigo_contable' => 'asc'),
      'recursive' => 1
    ));
    $bancos = Set::combine(
       $bancos_enteros,
       '{n}.Banco.id',
        array(
           '{0} {1}',
           '{n}.Empresa.codigo_contable',
           '{n}.Empresa.nombre_corto'
         )
     );
    

    returning

        array(
        (int) 14 => '57200002 Caixa',
        (int) 15 => '57200003 Sabadell',
        (int) 3 => '57200005 BBVA',
        (int) 16 => '57200006 Deutsche Bank',
        (int) 17 => '57200007 Popular',
        (int) 18 => '57200009 March',
        (int) 26 => '57200010 Bankinter',
        (int) 4 => '57200011 Santander'
    )
    

    While

    $this->Financiacion->Banco->Empresa->virtualFields = array(
        'codigo_nombre' => 'CONCAT(Empresa.codigo_contable,Empresa.nombre_corto)'
    );
    $this->Financiacion->Banco->virtualFields['codigo_nombre'] =  $this->Financiacion->Banco->Empresa->virtualFields['codigo_nombre'];
    $bancos = $this->Financiacion->Banco->find('list', array(
       'fields' => array('Banco.id','Banco.codigo_nombre'),
       'order' => array('Banco.codigo_nombre' => 'asc'),
       'recursive' => 1
        )   
    );
    

    returns a SQL error in a following query if I don't delete the virtual fields first:

    unset($this->Financiacion->Banco->Empresa->virtualFields);
    unset($this->Financiacion->Banco->virtualFields);
    

提交回复
热议问题