我在循环中使用load
方法来执行一组查询,每个查询都像这样:
$events->load( "`user_id` = {$users->id} AND `action` = \"view\"");
其中$events
是映射器,每个加载的记录在日志表中代表“事件”(当然)。
在load
调用之后,我会迭代找到的记录:
while( ! $events->dry() )
{
// do something with $event
$events->next();
}
当(内部)while
循环终止另一个主循环迭代时,执行load
再次调用。
此代码不会产生预期的行为,因为某些事件显然未加载。
我可以通过在$events->reset()
声明之前放置$events->first()
或$events->load
来解决此问题。
但是来自documentation
负载
映射到符合条件的第一条记录
[...]它使用find()来加载记录,并使第一条记录(mapper对象)与活动记录的条件匹配。通过移动光标指针
,可以将匹配相同条件的其他记录设置为活动记录
现在问题:这是 f3 的错误还是我错过了什么?
由于reset()
和first()
(显然)都解决了问题,哪一个更合适?
答案 0 :(得分:0)
这是旧版 F3 (3.4)的问题。
更新到 3.6 解决了这个问题。