只有1存在时,FindById返回2个结果

时间:2014-05-31 07:55:18

标签: php mysql cakephp-2.3

我正在使用cakephp 2.3。表站具有Id的主索引。

当我使用下面的findById函数来计算具有此id的表中的记录数时,可以看到2个结果。但是在表中,只有1个这个id的记录。

$station = $this->Station->findById($id);
$this->set('Station', $station);

当我运行foreach循环时,第二次看起来开始发出通知错误。

我很困惑。如果数据库中只有1个这个id的记录,为什么我得到2作为计数。

查看代码:

    $i=0; $c = count($Station); echo "Total Stations: $c"."<hr>"; 
    foreach ($Station as $station): 
       echo "Name: " . $station['Station']['name'];
    endforeach;  

1 个答案:

答案 0 :(得分:0)

可以找到CakePHP find函数的文档here。它说:

  

findBy()函数返回类似find('first')

的结果

find('first')的文档说:

  

find('first',$ params)将返回一个结果。如果你只期望一个结果,你可以使用它。

然后显示返回结果的格式:

Array
(
    [ModelName] => Array
        (
            [id] => 83
            [field1] => value1
            [field2] => value2
            [field3] => value3
        )

    [AssociatedModelName] => Array
        (
            [id] => 1
            [field1] => value1
            [field2] => value2
            [field3] => value3
        )
)

这就是count($station)为2的原因 - 此关联数组中有两个元素。它们不是两行,它们是模型的元素,也是相关模型的另一个元素。

您无需使用foreach,只需访问模型中的字段值即可。