【发布时间】:2015-02-05 15:52:01
【问题描述】:
我正在尝试使用 CakePHP 3.0 RC-1 检索随机行,我查看了 the docs。
使用我从 CakePHP 2.X 获得的东西,并将其作为在 CakePHP 3.0 RC-1 中获取随机行的起点。然而,这显然不是为蛋糕小姐做的:
$result = $this->Game->find('all')
->order('rand()')
->limit(1);
结果一无所获。数据库中有数据,我可以检索单个记录。 (即 $this->Game->get(20) 正常工作)。
【问题讨论】:
-
对我来说工作得很好...您究竟是如何测试结果的(仅调试
$result不会执行查询)? ps,也尝试使用最近的开发快照。 -
只是 var_dump 在视图或控制器中的整个 $game 实体。这是最新的开发快照。
-
你有它,你正在做的是转储查询,而不是结果。您必须首先实际获取一些东西,例如使用
first()(然后您可以放弃limit())。见book.cakephp.org/3.0/en/orm/query-builder.html#the-query-object -
那么,如果我通过 ->GET 而不是通过上述代码 var_dump 一个结果集,为什么我会看到结果?
-
因为
Table::get()在内部调用Query::firstOrFail()(它再次调用Query::first())。我建议检查源代码(让您单击方法调用的适当 IDE 会有所帮助)。
标签: php cakephp cakephp-3.0