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

时间:2018-06-27 14:14:40

标签: php cakephp cakephp-3.0

DocumentosController:

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]。

2 个答案:

答案 0 :(得分:1)

您必须使用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 );
}

以供参考https://book.cakephp.org/3.0/en/controllers.html#setting-view-variables

您还可以使用get()

$documento = $documentos->get($idDocumento);

答案 1 :(得分:0)

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