从链接的CakePHP3实体获取数据

时间:2016-05-13 15:48:39

标签: php cakephp-3.0

我有一个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。这两个表之间肯定存在链接数据。

1 个答案:

答案 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是一个个人资料实体数组