如何从CakePHP 3.x中的关联表接收数据作为对象(当前作为数组接收)

如何从CakePHP 3.x中的关联表接收数据作为对象(当前作为数组接收),php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我正在尝试使用以下内容将表关联到: 我的电脑里有这个代码 JobsController.php: JobsTable.php: 但是它应该是这样的(根据文档,它应该是一个名为type的对象): 我做错了什么?请注意大小写,关联定义为类型,但您将其包含为类型,这将使关联数据正在水合的结果集分组跳闸 $this->belongsTo('Types', /* ... */); 这应该可以解决问题 我想这种行为是否会被认为是有问题的,甚至是一个bug还是有争议的。如果我这样做,它会返回

我正在尝试使用以下内容将表关联到:

我的电脑里有这个代码

JobsController.php:

JobsTable.php:


但是它应该是这样的(根据文档,它应该是一个名为type的对象):



我做错了什么?

请注意大小写,关联定义为
类型
,但您将其包含为
类型
,这将使关联数据正在水合的结果集分组跳闸

$this->belongsTo('Types', /* ... */);
这应该可以解决问题


我想这种行为是否会被认为是有问题的,甚至是一个bug还是有争议的。

如果我这样做,它会返回相同的数组,但名称不同,而不是将其重命名为的类型properties@Tachi我有点怀疑,我猜你只是误解了实体调试信息。当通过
debug()
转储实体时,您将收到预格式化的数据,其中包括使隐藏属性可见的数据,例如受保护的
\u属性
显示为
属性
,其中包含名称和值的映射。
<?php

namespace App\Model\Table;

use Cake\ORM\Table;

class JobsTable extends Table
{
    public function initialize(array $config)
    {
        $this->table('jobs');
        $this->belongsTo('types', [
            'foreignKey' => 'type_id',
            'joinType' => 'INNER',
        ]);
    }

}
<?php

namespace App\Model\Table;

use Cake\ORM\Table;

class TypesTable extends Table
{
    public function initialize(array $config)
    {
        $this->table('types');
    }

}
<?php foreach($jobs as $job) : ?>
        <?php var_dump($job->types['color']); ?>
<?php endforeach; ?>
<?php foreach($jobs as $job) : ?>
    <?php var_dump($job->type->color); ?>
<?php endforeach; ?>
$this->belongsTo('Types', /* ... */);