我按照CakePHP 3的官方文档关联了两个模型,并且无法在视图(模板)中返回其中一个模型的值。
守则:
工作 - 实体
namespace App\Model\Entity;
use Cake\ORM\Entity;
class Work extends Entity
{
protected $_accessible = [
'project' => true,
'client' => true,
'filter' => true,
'tech_1' => true,
'tech_2' => true,
'tech_3' => true,
'tech_4' => true,
'job' => true,
'status' => true,
'link' => true,
];
}
WorksImage - 实体
namespace App\Model\Entity;
use Cake\ORM\Entity;
class WorksImage extends Entity
{
protected $_accessible = [
'photo' => true,
'photo_dir' => true,
'work_id' => true,
'work' => true,
];
}
PagesController - Controller:
namespace App\Controller;
use Cake\Core\Configure;
use Cake\Network\Exception\NotFoundException;
use Cake\View\Exception\MissingTemplateException;
class PagesController extends AppController
{
public function portfolio()
{
$this->loadModel('Works');
$this->loadModel('WorksImages');
$works = $this->Works->find('all',['contain' => ['WorksImages'],'limit' => 10, 'order' => ['Works.created' => 'DESC']]);
$this->set(compact('works'));
}
}
WorksTable - 表:
namespace App\Model\Table;
use App\Model\Entity\Work;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class WorksTable extends Table
{
public function initialize(array $config)
{
$this->table('works');
$this->displayField('project');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->hasOne('WorksImages', [
'foreignKey' => 'work_id'
]);
}
WorksImagesTable - 表
namespace App\Model\Table;
use App\Model\Entity\WorksImage;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class WorksImagesTable extends Table
{
public function initialize(array $config)
{
$this->table('works_images');
$this->displayField('id');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Works', [
'foreignKey' => 'work_id',
'joinType' => 'INNER'
]);
}
投资组合 - 查看(模板)
<div class="container">
<div class="span12">
<h1>Portfólio</h1>
<div>
<?php foreach ($works as $work): ?>
<div>
<p><?= 'Conteúdo da tabela Works = ' . $work->project ?></p>
<p><?= 'Conteúdo da tabela WorksImages = ' . $work->work_id ?></p>
</div>
<?php endforeach ?>
</div>
</div>
</div>
我无法从WorksImagesTable模型返回任何值。在调试期间,我意识到表是相关的,另外,cake在视图中没有返回错误。
我无法理解错误。
我提前感谢任何帮助。
感谢。
答案 0 :(得分:0)
在foreach循环中(debug($ work-&gt; works_image))返回如下内容:
object(App\Model\Entity\WorksImage) {
'new' => false,
'accessible' => [
'photo' => true,
'photo_dir' => true,
'work_id' => true,
'work' => true
],
'properties' => [
'id' => (int) 1,
'photo' => 'arteviva.jpg',
'photo_dir' => 'a4cd522c-b7b9-437a-99fc-0eb15827944f',
'work_id' => (int) 1,
'created' => object(Cake\I18n\Time) {
'time' => '2015-05-08T20:25:07+0000',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => null
],
'dirty' => [],
'original' => [],
'virtual' => [],
'errors' => [],
'repository' => 'WorksImages'
}