CakePHP 3.x - 关联错误 - 无法将表链接在一起

时间:2017-08-05 02:57:11

标签: mysql associations cakephp-3.x

我正在尝试关联2个表:JobesTypes。类型的表结构非常简单,仅包含idname(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; ?>

我的错误在哪里?

1 个答案:

答案 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