Idiorm find_many()只返回一个对象

时间:2013-09-18 02:52:11

标签: php idiorm

我已经和idiorm玩了几天了,一点一点地设法让它真正开始执行查询。我遇到了一些有点奇怪的东西,我无法弄明白。 find_many()函数只返回一条记录,它始终是数据库中的最后一条记录。例如,我通过mysqli执行以下查询,我在我的数据库中获得了所有16个用户:

// connection is just a singleton instance to manage DB connections    
$connection->getRawInstance()->getRawConnection()->query('select * from users'));

// The result of this is all 16 users

现在,当我在idiorm中执行等效查询时,我只获得user16,即数据库中的最后一个。

\ORM::configure('mysql:host=localhost;dbname=------');
\ORM::configure('username', '----');
\ORM::configure('password', '----');
\ORM::configure('logging', true);

$people = \ORM::forTable('users')->findMany();

有谁知道这是为什么?

1 个答案:

答案 0 :(得分:4)

经过调查;您的表格似乎缺少id列,或者您的id列不包含唯一值,或者您已将Idiorm配置为使用无效列而不是id

Idiorm循环返回的行,并使用id值作为索引/键将它们分配给数组。如果没有id值,则仅返回最后一个结果。如果您有一个包含重复值的id列,那么您将获得的结果将少于您应该的结果,因为重复项将覆盖数组中的先前键。

您可以在github bug上看到更多内容以及建议的更改。