我正在使用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;
答案 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
,只需访问模型中的字段值即可。