我正在使用其中包含州ID的用户个人资料,因此我有这样的疑问:
$user = $this->Users->find()
->where(['Users.id' => $this->Auth->user('id')])
->contain(['UserProfiles' => function ($q) {
return $q
->select(['city', 'address_one', 'address_two', 'zip'])
->contain(['States' => function ($q) {
return $q
->select(['id']);
}]);
}])
->select('first_name', 'last_name')
->first();
这会正确地返回我的所有数据,除了状态 - 相反,我得到了回复:
state {"id":6}
这有点奇怪,所以在前端我试过了:
echo $user->user_profile->state; // yields the string {"id": 6}
echo $user->user_profile->state->id; // error: trying to access property of non-object
echo $user->user_profile->state['id']; // index error, doesn't exist
那么这笔交易是什么?为什么以这种方式返回?我在列上没有任何内容,将其指定为json或任何奇怪的内容;只是普通的蛋糕烘焙物。我该如何吐出身份?
答案 0 :(得分:0)
感谢评论,我发现了这个问题。虽然我在state_id中保存id并且基于该列包含,但是尚未删除的旧列(状态)是一个文本字段并且搞乱了状态包含的返回值,因为包含的名称也被命名'状态'
我进入了数据库,重新命名为“状态”'到' old_state',再次以标准格式返回。