TLDR: 如何使用结果对象中的第一个项?
从数据库获取数据后,我想先将第一个数据分离出来并单独使用,再遍历剩余视频。(都在我的模板/视图文件中)。如果它是数组,我可以使用 array_shift
这样的方法,但到目前为止,使用对象时我什么也没得到。
首先,在我的控制器中获取数据,并将其传递给视图:
$videos = $this->Videos->find();
$this->set(compact('videos'));
然后,在视图(模板文件)中,我尝试过这样做:
$featuredVideo = $videos{0};
错误 无法使用类型为Cake\ORM\Query的对象作为数组
还有这个:
$featuredVideo = $videos->0;
错误:语法错误,意外的“0”(T_LNUMBER),期望标识符 (T_STRING) 或变量 (T_VARIABLE) 或 '{' 或 '$'
还有这个:
$featuredVideo = $videos->toArray()[0];
这种方法(有点)可行,但是我必须使用$featuredVideo
作为一个数组,这与其他地方不同,似乎不够优雅。
还有这个:
$featuredVideo = $videos->first();
这很棒,但它限制了整个对象只能用于第一个视频,所以我无法使用其他的视频了。
而这个:
$allVideos = $videos;
$featuredVideo = $videos->first();
但是,显然由于它是一个对象,$allVideos
只是对$videos
的引用,因为它们都被缩减为第一个视频。
我意识到这似乎是一个简单的问题,可能有一个简单的答案,但我已经找了一些方法来获取上述结果中对象的第一个项并尝试了建议。