我已经和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();
有谁知道这是为什么?
答案 0 :(得分:4)
经过调查;您的表格似乎缺少id
列,或者您的id
列不包含唯一值,或者您已将Idiorm配置为使用无效列而不是id
。
Idiorm循环返回的行,并使用id
值作为索引/键将它们分配给数组。如果没有id
值,则仅返回最后一个结果。如果您有一个包含重复值的id
列,那么您将获得的结果将少于您应该的结果,因为重复项将覆盖数组中的先前键。
您可以在github bug上看到更多内容以及建议的更改。