Php 未定义的属性:Cake\ORM\Query::$texto

Php 未定义的属性:Cake\ORM\Query::$texto,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,文档控制器: public function documento($idDocumento) { $documentos = TableRegistry::get('Documentos'); $documento = $documentos ->find() ->select('id', 'titulo', 'texto') ->where(['id' =&

文档控制器:

public function documento($idDocumento) {
   $documentos = TableRegistry::get('Documentos');
   $documento = $documentos
                  ->find()
                  ->select('id', 'titulo', 'texto')
                  ->where(['id' => $idDocumento]);
  }
documento.ctp:

<div>
  <?= $documento->texto; ?>
</div>

错误:注意(8):未定义的属性:Cake\ORM\Query:$texto [APP/Template/Documentos/documento.ctp,第3行]

$id,如果它有值,如果它返回一个数字,但查询不起作用,因为我试图添加
->first()
,但它返回:

内部服务器错误[500]


将\Cake\ORM\Query的实例传递给视图。必须通过调用first()或all()或execute()来执行查询以获得结果。

必须使用set()方法,这是将数据从控制器发送到视图的主要方法。
使用set()后,可以在视图中访问变量:

public function documento($idDocumento) {
   $documentos = TableRegistry::get('Documentos');
   $documento = $documentos
              ->find('all')
              ->select('id', 'titulo', 'texto')
              ->where(['id' => $idDocumento]);
   $this->set('documento ', $documento );
}
供参考

也可以使用get()


first()或all()或execute()这三个错误中的任意一个给出错误:内部服务器错误[500]。请更新您的问题以显示您尝试此操作的代码?如果您仅检索一条记录,最好使用
->get($idDocumento)
而不是
->find()->where(['id'=>$idDocumento])
执行此操作。谢谢!它奏效了
$documento = $documentos->get($idDocumento);