我可以在CakePHP3.5中执行此提取代码查询吗?

我可以在CakePHP3.5中执行此提取代码查询吗?,cakephp,cakephp-3.x,Cakephp,Cakephp 3.x,ServiceDetailController中的我的代码 $users = $this->ServiceDetail->Users->find()->extract('first_name')->where(['position' => 2]); 我得到一个错误: 调用未定义的方法Cake\ORM\ResultSet::where() 调试基础:检查被调用对象中是否存在该方法。如果没有,问问自己为什么。然后检查extract()返回的内容,您将得到答案

ServiceDetailController中的我的代码

  $users = $this->ServiceDetail->Users->find()->extract('first_name')->where(['position' => 2]);
我得到一个错误:

调用未定义的方法Cake\ORM\ResultSet::where()


调试基础:检查被调用对象中是否存在该方法。如果没有,问问自己为什么。然后检查extract()返回的内容,您将得到答案。你的基本问题是,作为一个比喻,你试图在打开瓶子之前从瓶子里喝水。如果没有结果,就无法提取


提取不返回查询对象。首先构建您的查询,然后执行它,例如all(),然后对结果对象调用extract,因为它实现了一个集合,允许您对其调用extract()。

我认为如果您直接对查询调用
extract
,而不通过
all
显式执行它,也会起作用。不过,where条件肯定需要首先完成。