首页 > 解决方案 > 如何在相关表中使用我的实体名称而不是 id

问题描述

我正在 CakePHP 3.x 上创建一个项目,我很新。我在使用 hasMany 相关表来获取我的实体名称而不是它们的 ID 时遇到问题。

我来自 CakePHP 2.x,在此我使用 anApp::import('controller', array('Users')但在视图中检索所有要显示的数据而不是 id,据说这是一种不好的做法。而且我不希望在我的新代码中有任何代码违规。有谁能够帮我?这是代码:

public function view($id = null)
{     
     $this->loadModel('Users');
     $relatedUser = $this->Users->find()
         ->select(['Users.id', 'Users.email'])
         ->where(['Users.id'=>$id]);
     $program = $this->Programs->get($id, [
         'contain' => ['Users', 'ProgramSteps', 'Workshops']
     ]);

     $this->set(compact('program', 'users'));
     $this->set('_serialize', ['ast', 'relatedUser']);
}

我希望在程序表的relatedUsers 中获得用户的电子邮件,但实际输出是:

Notice (8): Trying to get property 'user_email' of non-object [APP/Template\Asts\view.ctp, line 601].

真的需要帮助

先感谢您。

标签: cakephp-3.0

解决方案


您已经要求它序列化relatedUser变量,但这是针对 JSON 和 XML 视图的。您实际上没有视图setrelatedUser变量:

$this->set(compact('program', 'users', 'relatedUser'));

此外,您在$users此处设置变量,但它从未被初始化。


推荐阅读