我有一个User
实体,通过hasMany
外键与Profile
建立user_id
关系。
在我的User
课程中,我正在尝试创建一个虚拟字段,以便我可以访问链接的name
实体的Profile
属性
protected $_virtual = ['profile_name'];
protected function _getProfileName()
{
return $this->profile->name;
}
无论我尝试什么,我都会Trying to get property of non-object
我也试过了:
$this->_properties['profile']->name;
$this->profile->_properties['name'];
我知道我可以通过使用Cake\ORM\Table
构建查询来获取此数据,但我希望能够进行此操作。
我做错了什么?
P.S。这两个表之间肯定存在链接数据。
答案 0 :(得分:0)
答案似乎是
这不是它的工作原理
相反,使用'eager loading'来获取链接的实体数据。也就是说在使用contain
时使用find()
方法:
e.g。
$users = TableRegistry::get('users');
$query = $users->find('all', ['contain' => ["Profiles"]])
->where(['id' => $userId])
->first();
或查询对象本身:
$query->contain(['Profiles']);
在此示例中,$query
将包含Profile实体对象以及User实体
即。 $query->profiles
是一个个人资料实体数组