我正在尝试关联2个表:Jobes
和Types
。类型的表结构非常简单,仅包含id
和name
(1.full-time 2.partial 3.freelance)
Jobs表,除了所有其他字段外还包含名为的类型的外键:type_id
所以Jobs 属于类型。
我遵循蛋糕惯例,但仍然是同样的错误:
作业与类型无关...
我创建了JobsTable类
use Cake\ORM\Table;
class JobsTable extends Table{
public $name= 'Jobs';
public function initialize(array $config){
$this->belongsTo('Types');
}
}
在控制器中声明它:
<?php
namespace App\Controller;
use App\Controller\AppController;
class JobsController extends AppController
{
public $name='Jobs';
public function index(){
//Get job info
$jobs =$this->Jobs->find('all')->contain(['Types']);
$this->set('jobs',$jobs);
}
}
然后过去查看(index.ctp):
<?php foreach ($jobs as $job) : ?>
<p> <?php echo $job->title; ?> <?php echo $job->types->name; ?></p>
<?php endforeach; ?>
我的错误在哪里?
答案 0 :(得分:0)
您还需要设置foreignKey
。
<强> JobsTable.php 强>
$this->belongsTo('Types', [
'foreignKey' => 'type_id'
]);
<强> TypesTable.php 强>
$this->hasMany('Jobs', [
'foreignKey' => 'type_id'
]);
要从CLI
生成适当的关系,请转到命令提升中的'project_directory/bin'
并点击以下bake命令:
cake bake types model // for types table
和
cake bake jobs model // for jobs table
请在此处查看详细信息:CakePhp3 Code Generation With Bake