cakephp-3.0 - 如何在相关表中使用我的实体名称而不是 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].
真的需要帮助
先感谢您。
解决方案
您已经要求它序列化relatedUser
变量,但这是针对 JSON 和 XML 视图的。您实际上没有视图set
的relatedUser
变量:
$this->set(compact('program', 'users', 'relatedUser'));
此外,您在$users
此处设置变量,但它从未被初始化。
推荐阅读
- java - 如何使用 DatabaseClient 从 marklogic 加载数据?java.net.SocketException:连接重置
- r - 如何对 r 中的数值范围进行分类
- linux - 在 curl 中使用 -o - 有什么意义?
- regex - 在带引号的字符串 csv 文件中有多个双引号
- javascript - 当我运行此代码时,为什么控制台会在循环之前返回第一个随机数?
- powerbi - Power BI - 在矩阵总计上使用切片器
- javascript - 如何在three.js中使用Vector3创建box3?
- arrays - 如何将变量用作数组中的选项?
- css - 创建一个 Angular 可调整大小的水平卡片
- ruby-on-rails - AdapterNotSpecified 使用 ClearDB for MySQL 将 Rails 应用程序部署到 Heroku