0
  • CakePHP 版本:3.2
  • 平台和目标:Wamp、MySQq、谷歌浏览器

我做了什么

一个控制器中两个表之间的右连接。我正在尝试检索信息,但我不能

$query = $this->Schedules->find('all')
  ->rightJoin(['Sessions'=> 'sessions'], ['Sessions.id is not null'])
  ->select(['Sessions.specialist_id'])
  ->where(['Sessions.id ='=>$session])

foreach ($query as $sp) {
  if(!empty($sp)){
    $specialist=$sp->Sessions->specialist_id;

预期行为

获取专家号

实际行为

我无法获取专家 ID

更多信息

1我已经尝试过$specialist=$sp->specialist_id;,但没有任何反应
2debug ($sp);die();就是我得到的

object(App\Model\Entity\Schedule) {

'Sessions' => [
    'specialist_id' => 'a7f6d5b2-b0f3-4a55-b6ce-41d393e80d12'
],
'[new]' => false,
'[accessible]' => [
    '*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Schedules'

}

4

1 回答 1

1

specialist_id属于Sessions,因此您需要通过该密钥访问它,即

$sp->Sessions['specialist_id']

或者

$sp['Sessions']['specialist_id']

甚至

$sp->get('Sessions')['specialist_id']

... oooooor,一旦该功能成为核心

$sp->get('Sessions.specialist_id')

这是相当基本的东西,但也许文档可以从有关如何访问嵌套数据的示例中受益,包括对象和数组的混合。

食谱 > 数据库访问和 ORM > 实体 > 访问实体数据

附带说明,AFAICT$sp永远不应该为空,要么有结果,要么没有。

于 2016-06-18T19:35:37.533 回答