5

几天来,我一直在玩 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();

有人知道为什么吗?

4

1 回答 1

4

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

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

您可以在github bug上看到更多信息,以及建议的更改。

于 2013-10-01T19:14:14.507 回答