CakePHP - 检索和处理来自不同表的数据

时间:2011-08-18 20:04:39

标签: cakephp

对不起,我是CakePHP的新手,我在这个问题上有点困惑,让我解释一下:

我有两个表之间的关系。其中一张是Dose,另一张是坦克。所以,一个坦克属于一个剂量。剂量有很多坦克。表模式是:

CREATE TABLE `doses` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `dose` INT(5) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)

在我的Tank视图中,我有以下代码:

<?php echo $form->input('dose_id', array('class'=>'input', 'label' => ''));?>

来自剂量表的每个“剂量”(字段)对应于一个值,例如200,300等。在插入我的数据库(table tank)之前,我需要使用这些数字来计算其他数字。例如,我在tank_controllers中的代码:

$t_u = $this->data['Tank']['tipo_uso_id'];
if( $t_u == '1'){
$this->data['Tank']['producao_adubo_diaria'] = $this->data['Tank']['dose_id'] * 0.10;
.
.
.

然而,它给我带来剂量的ID而不是值(剂量场)。我在哪里可以设置这个来为我提供正确的数据(剂量)?我试图在我的模型中设置这种方式:

'Dose' => array(
        'className' => 'Dose',
        'foreignKey' => 'dose_id',
        'conditions' => '',
        'fields' => 'dose',
        'order' => ''
    )

它不起作用。

感谢您抽出时间帮助我。

提前致谢。

2 个答案:

答案 0 :(得分:0)

it is bringing to me the ID of the Dose and not the value (dose field). Where can I set up this to bring me the correct data (dose)?

您需要从db(模型)获取它,而不是从视图中获取它。所以你需要做一个find()。如果您是Cake的新手,您应该先阅读食谱,了解它的工作原理。

答案 1 :(得分:0)

$form->input('dose_id')会产生什么?下拉?如果是这样;默认情况下,cake会生成一个下拉列表,其中value包含(dose_)id,而您看到的文本为$displayField的值(通常是名称/标题)。

要做到这一点;如果我理解你,你需要首先查询doses所有值,并使用dose值作为键和值,而不是id将结果存储在数组中像往常一样。然后,您就可以从$this->data访问实际剂量值。

$doseArray=array();
$doses = $this->Dose->find('all');
foreach($doses['Dose'] as $k => $v) {
    $doseArray[$v] = $v;
}

也许。看起来有点多余,所以我可能会离开。