我尝试使用belongsTo
关联表格:
http://book.cakephp.org/3.0/en/orm/associations.html#belongsto-associations
我的
中有这段代码JobsController.php:
class JobsController extends AppController
{
public $name = 'Jobs';
/**
* Index method
*
* @return void
*/
public function index()
{
//Get Jobs info
$getjobs = TableRegistry::get('Jobs');
$jobs = $getjobs->find('all')->contain(['Types']);
$this->set('jobs',$jobs);
}
}
JobsTable.php:
<?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',
]);
}
}
TypesTable.php:
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
class TypesTable extends Table
{
public function initialize(array $config)
{
$this->table('types');
}
}
而且我收到了所需的数据,但是我没有把它作为一个对象接收,而是用手册写的,我把它作为一个数组接收,而不是应该是什么
所以现在我这样访问它(因为它是一个名为 types 的数组):
<?php foreach($jobs as $job) : ?>
<?php var_dump($job->types['color']); ?>
<?php endforeach; ?>
但它应该是这样的(根据文档,它应该是一个名为 type 的对象):
<?php foreach($jobs as $job) : ?>
<?php var_dump($job->type->color); ?>
<?php endforeach; ?>
我做错了什么?
答案 0 :(得分:3)
注意你的大小写,关联被定义为types
,但是你将它包含在Types
中,这会使相关数据被水合的结果集分组运行。
$this->belongsTo('Types', /* ... */);
那应该解决它。
我认为这种行为是否会被视为有问题甚至是错误都是值得商榷的。