方法find()在CakePHP中不起作用

时间:2013-07-04 19:41:05

标签: cakephp model cakephp-2.0

我正在尝试使用find('list')方法,但没有成功。

当我尝试列出付费类型时,只有一个数据库表显示正确,另一个正在执行正确的SQL,但它返回null(即使使用sql获取行)。

如果尝试阅读Tpagamento的一个字段,它就可以了 如果我将Tpagamento的displayField更改为'id',它可以工作,但查询只显示id。

以下是该方案:

(Parcelamento和Tpagamento有相同的数据库字段)

查看方法:

public function view($id = null) {

    $this->Ordemservico->id = $id;
    if (!$this->Ordemservico->exists()) {
        $this->Session->setFlash('This Order does not exist..','flash_error');
        $this->redirect(array('action' => 'index'));
    }

            //Listing all orders // THIS IS WORKING
    $os = $this->Ordemservico->read(null, $id);
    $this->set('os',$os);

    //Listing the types of paying //THIS  IS WORKING
    $this->loadModel('Parcelamento');
    $parcelamentos = $this->Parcelamento->find('list');
    $this->set('parcelamentos',$parcelamentos);


    $this->loadModel('Tpagamento'); // THIS IS NOT WORKING
    $tpagamento = $this->Tpagamento->find('list');
    $this->set('tpagamento ',$tpagamento );

            //Read a specific type of paying, WORK!
    $this->loadModel('Tpagamento'); // THIS IS WORKING
    $tpagamentos = $this->Tpagamento->read(null,'5');
    $this->set('tpagamentos',$tpagamentos);

}

OrdemServico模型:

class Ordemservico extends AppModel {

    public $displayField = 'cliente_id';

    public $belongsTo = array(      
        'Tpagamento' => array(
            'className' => 'Tpagamento',
            'foreignKey' => 'tpagamento_id',
        ),
        'Parcelamento' => array(
            'className' => 'Parcelamento',
            'foreignKey' => 'parcelamento_id',
        ),
    );

}

Tpagamento模特:

class Tpagamento extends AppModel {

    public $useTable = 'tpagamentos';

    public $displayField = 'nome';

    public $hasMany = array(
        'Ordemservico' => array(
            'className' => 'Ordemservico',
            'foreignKey' => 'tpagamento_id',
        ),

    );



}

Parcelamento模特:

class Parcelamento extends AppModel {

    public $displayField = 'nome';

    public $hasMany = array(
        'Ordemservico' => array(
            'className' => 'Ordemservico',
            'foreignKey' => 'parcelamento_id',
        ),

    );



}

生成的SQL DUMP:

4   SELECT `Parcelamento`.`id`, `Parcelamento`.`nome` FROM `tereza`.`parcelamentos` AS `Parcelamento` WHERE 1 = 1       5   5   0

5   SELECT `Tpagamento`.`id`, `Tpagamento`.`nome` FROM `tereza`.`tpagamentos` AS `Tpagamento` WHERE 1 = 1       4   4   0

6   SELECT `Tpagamento`.`id`, `Tpagamento`.`nome`, `Tpagamento`.`created`, `Tpagamento`.`modified` FROM `tereza`.`tpagamentos` AS `Tpagamento` WHERE `Tpagamento`.`id` = 5 LIMIT 1      1   1   0

2 个答案:

答案 0 :(得分:1)

在我设置的Config / database.php中:'encoding'=> 'UTF8'

工作的原因在一个表而不是另一个表中是因为在一个表(tpagamentos)中我有特殊字符而在另一个表中没有(parcelamentos)。

答案 1 :(得分:1)

要在列表中显示两个字段,请使用以下语法:

$this->Parcelamento->find('list', array('fields' => array('id', 'other_field_name')));