前提・実現したいこと
こんにちは!
今、社内管理システムを作っています。
cakphp3でバックを作り、APIとして機能させてフロントと連携させています。
発生している問題・エラーメッセージ
ひとまずcakeの画面でactionが動作したのを確認したうえでAPIに落とし込んでいっているのですが、まったく同じクエリーでエラーが出てしまいます。
エラーメッセージ
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'TFiles.deleted' in 'where clause'
ソースコード
TFileController.php
(通常の一覧を出すaction)
public function index() { $tFiles = $this->TFiles->find() ->where(['TFiles.deleted' => '0']) ->contain('MUsers', function ($q) { return $q->select(['id', 'name']); }) ->order(['TFiles.created' => 'DESC']); $this->paginate($tFiles); $this->set(compact('tFiles')); }
ApiController.php
(問題のAPI)
public function fileListApi() { if ($this->request->is('post')) { $user_info = $this->request->data(); $tFiles = $this->TFiles->find() ->where(["TFiles.deleted" => '0']) ->contain('MUsers', function ($q) { return $q->select(['id', 'name']); }) ->order(["TFiles.created" => 'DESC']); $status = true; $this->set([ 'status' => $status, 'tFiles' => $tFiles, '_serialize' => ['status', 'tFiles'] ]); return; } }
試したこと
当然エラーが出るだろうなと思いつつも
public function fileListApi() { if ($this->request->is('post')) { $user_info = $this->request->data(); $tFiles = $this->TFiles->find() ->where(["deleted" => '0']) ->contain('MUsers', function ($q) { return $q->select(['id', 'name']); }) ->order(["created" => 'DESC']); $status = true; $this->set([ 'status' => $status, 'tFiles' => $tFiles, '_serialize' => ['status', 'tFiles'] ]); return; } }
にしてみたところ
containしているMUsersにも「deleted」はあるので
エラーメッセージ
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'deleted' in order clause is ambiguous
となります。(ですよね。)
同じプロジェクト内でのアクションなので、mySQLのバージョン違いということはないでしょうし、困惑しております。
どなたかお力添えをいただけると幸いです。
よろしくお願いします!
補足情報
cakephp 3.5.10
mySQL 5.7.21
Apache 2.4.6