0

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

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

如果尝试读取 Tpagamento 的 ONE 字段,它可以工作如果我将 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',
        ),

    );



}

包裹模型:

class Parcelamento extends AppModel {

    public $displayField = 'nome';

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

    );



}

生成的 SQL 转储:

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
4

2 回答 2

1

在 Config/database.php 我设置:'encoding' => 'utf8'

在一张桌子而不是另一张桌子上工作的原因是因为在一张桌子上(tpagamentos)我有特殊字符而在另一张桌子上没有(parcelamentos)。

于 2013-07-04T20:24:13.040 回答
1

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

$this->Parcelamento->find('list', array('fields' => array('id', 'other_field_name')));
于 2013-07-05T04:25:52.757 回答