在 RedBeanPHP 中使用 FOR 循环
Posted
技术标签:
【中文标题】在 RedBeanPHP 中使用 FOR 循环【英文标题】:Using a FOR loop with RedBeanPHP 【发布时间】:2011-12-11 03:49:31 【问题描述】:// Includes rb.php here etc.
$mail_type = array('gmail.com', 'yahoo.com', 'yandex.ru', 'hotmail.com', 'live.no');
for ($i = 0; $i < 100; $i++)
$mail = R::dispense('emails');
$mail->id = $i;
// Create random email
$mail->email = strtolower(substr(base64_encode(mt_rand(99, 99999)), 0, -2)).'@'.$mail_type[mt_rand(0, 4)];
R::store($mail);
unset($mail); // This doesn't work either
尝试使用 RedBeanPHP 插入 100 封随机生成的不同电子邮件。出于某种原因,我无法让它工作,因为只有最后一个对象被插入到数据库中,有效地替换了最后一个。也找不到关于它的任何文档。有什么想法吗?
【问题讨论】:
【参考方案1】:RedBeanPHP 认为它在您设置 id 后就已经存储了。解决方法是去掉 $mail->id = $id 字段。
【讨论】:
这是有道理的。如果没有指定 ID,R::store
只会插入一个新的自动递增行。谢谢。
在自动增量主索引上强制使用特定值只是询问竞争条件问题(另请参阅***.com/questions/5101487/…)【参考方案2】:
如果您说 $mail 正在使用电子邮件进行实例化,但没有存储到 R?我不确定 R 是什么,但如果它是一个对象数组,我可以进一步扩展。等待您的回复。
【讨论】:
R::
是对 RedBeanPHP ORM 的静态引用。 R::Store
会将存储在$mail
变量中的对象保存到数据库中。
嗯,从您的解释来看,我认为您的代码看起来不错。您是否尝试在访问数据库之前打印出 for 循环的结果?如果它返回你想要的,那么问题出在数据库或你的 R 对象上。以上是关于在 RedBeanPHP 中使用 FOR 循环的主要内容,如果未能解决你的问题,请参考以下文章
在for循环中使用python next()而不推进for循环[重复]