脚本宝典收集整理的这篇文章主要介绍了如何从CakePHP 3结果对象中获取第一项,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。@H_777_0@
从数据库中获取数据后,我想先拉出第一个并单独使用它,然后重复其余的视频. (全部在我的模板/视图文件中).如果它是一个数组,我可以使用像array_shift这样的东西,但到目前为止,这个对象,我是空的.
首先,我在Controller中获取数据,并将其传递给View:
$videos = $this->Videos->find(); $this->set(compact('videos'));
然后,在视图(模板文件)中,我试过这个:
$featuredVideo = $videos{0};
还有这个:
$featuredVideo = $videos->0;
还有这个:
$featuredVideo = $videos->toArray()[0];
这种工作(有点),但后来我必须使用$featuredVideo作为一个数组,这与其他地方不同,并且看起来不优雅.
还有这个:
$featuredVideo = $videos->First();
这很棒,但是它将整个对象限制为只有第一个,所以我不再拥有其余的视频.
还有这个:
$allVideos = $videos; $featuredVideo = $videos->first();
但是,显然因为它是一个对象,$allVideos只是对$视频的引用,因为它们都被缩减为第一个视频.
我意识到这似乎是一个简单的问题,它可能是一个简单的答案,但我已经环顾四周,并尝试了如何从具有上述结果的对象中获取第一个项目的建议.
所以,我不能只访问第一个子对象,因为查询尚未执行以显示结果.
当我在设置上面的变量之后尝试做 – > gt; first()时,它实际上是在将limIT设置为1后对查询对象执行查询,因此两者都只有1.
更多details here.
答案(代码中):
// Controller $videos = $this->Videos->find()->all(); $this->set(compact('videos')); // View $featuredVideo = $videos->first();
有关when query objects are lazily evaluated的更多详细信息.
感谢jose_zap和marc_帮助我澄清这个.
以上是脚本宝典为你收集整理的如何从CakePHP 3结果对象中获取第一项全部内容,希望文章能够帮你解决如何从CakePHP 3结果对象中获取第一项所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。