前提・実現したいこと
cakephp3で一覧表示をさせる機能を作成中なのですが、Modelをbakeした後Controllerでcontainを指定したのですがデータベースエラーが出ていまい、上手く表示されません。
###表示されたエラー
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'TaskStaffs.task_id' in 'field list'
該当のソースコード
TasksCotroller.php
1public function index() { 2 3 $tasks = $this->Tasks->find() 4 ->contain(['Projects', 'TaskStaffs']) 5 ->select([ 6 'id' => 'Tasks.id', 7 'project_id' => 'Tasks.project_id', 8 'task_no' => 'Tasks.task_no', 9 'title' => 'Tasks.title', 10 'body' => 'Tasks.body', 11 'expiration_date' => 'Tasks.expiration_date', 12 'created' => 'Tasks.created', 13 'project_name' => 'Projects.name', 14 'task_staff_id' => 'TaskStaffs.task_id', 15 ]) 16 ->order(['Tasks.expiration_date' => 'ASC']) 17 ->toArray(); 18 19 $this->set(compact('tasks')); 20}
TasksTable.php
1class TasksTable extends Table 2{ 3 public function initialize(array $config) { 4 parent::initialize($config); 5 6 $this->setTable('tasks'); 7 $this->setDisplayField('title'); 8 $this->setPrimaryKey('id'); 9 10 $this->addBehavior('Timestamp'); 11 12 $this->belongsTo('Projects', [ 13 'foreignKey' => 'project_id', 14 'joinType' => 'INNER', 15 ]); 16 $this->hasMany('TaskStaffs', [ 17 'foreignKey' => 'task_id', 18 ]); 19 } 20}
試したこと
公式や他のサイト等を拝見し、クロージャーを実装したりもしたのですが、上手く行きませんでした。
hasManyなのでSQLが複数行になってしまい、findした際に1列目のSQLしか見られてないのだと思っているのですが解決策が思いつきません。
Controller側でJOINすることも考えたのですが、出来るだけControllerは薄くしたいのでモデル側で解決できればと思っております。
皆様のお力をお借りできたらと思います。