こんにちは。
何回も質問あげていますが、学校の時間割システムを作っています。
Localでは問題なく動いているのでテストサーバーにファイルをアップしてテストしようと思いました。
DBは、CREATEしただけでデータは入ってない状態です。
そうしたら、アソシエーションがかかってないIndexページは空いているリストが出るので大丈夫でしたが、何か他のテーブルとアソシエーションがかかっているIndexページは、以下のようなエラーメッセージが出ます。
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'course.deleter' in 'where clause'
エラーになる部分は、コントローラーのIndex()内の$course = $this->paginate($course); だそうです。
データが何も入ってないので、空リストが出るようにしたいですが、エラーになるので大変困っています。
何かアドバイスいただければと思います。
よろしくお願いいたします。
SQL
1CREATE TABLE `course` ( 2 `id` int(10) UNSIGNED NOT NULL COMMENT '自動採番キー', 3 `course_idx` int(10) UNSIGNED NOT NULL COMMENT '学科ID', 4 `year` year(4) NOT NULL COMMENT '年度', 5 `customer_idx` int(10) UNSIGNED NOT NULL COMMENT '契約ID', 6 `course_code` text NOT NULL COMMENT '学科コード', 7 `section_idx` int(10) UNSIGNED NOT NULL COMMENT '学部ID', 8 `course_name` text COMMENT '学科名', 9 `course_short` text COMMENT '短縮名', 10 `memo` text COMMENT '備考', 11 `is_used` tinyint(1) DEFAULT NULL COMMENT '使用フラグ : true:使用/false:未使用', 12 `creater` text COMMENT '作成者 : 作成者のアカウント', 13 `created` datetime DEFAULT NULL COMMENT '作成日時', 14 `modifier` text COMMENT '更新者 : 更新したアカウント', 15 `modified` datetime DEFAULT NULL COMMENT '更新日時', 16 `deleter` text COMMENT '削除者 : 削除実行したアカウント', 17 `deleted` datetime DEFAULT NULL COMMENT '削除日時' 18) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学科マスタ : 学科の情報を保持するテーブル';
PHP
1 public function index() 2 { 3 // ビューに表示するためのデータセット生成 4 $course = $this->Course->find()->where(['course.deleter IS NULL', 'course.deleted IS NULL']) 5 ->andWhere(['course.year'=>$year]) 6 ->andWhere(['course.customer_idx' => $this->Auth->User('customer_idx')]) 7 ->select(['id','course_idx','course_code','section_idx','course_name', 8 'course_short','is_used']) 9 ->contain(['Section' => function($q) { 10 return $q->select(['section_idx','section_name']); 11 }, 12 ]); 13 14 $course = $this->paginate($course); // この行でエラーになります。 15 16 $this->set(compact('course')); 17 $this->set('_serialize', ['course']); 18 } 19
[試してみたこと] 少しマニュアルをみてコード変えてみましたが結果は同じでした。
PHP
1 $course = $this->Course->find('all',[ 2 'conditions' => ['deleter IS NULL', 'deleted IS NULL','year'=>$year,'customer_idx' => $this->Auth->User('customer_idx')], 3 'contain' => ['Section' => function($q) { 4 return $q->select(['section_idx','section_name']); 5 }, 6 ] 7 ]);
[また試してみたこと] LocalのDBからデータを削除し、空の状態にしてみたらLocalでは問題なく空リストが表示されました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/25 02:56
退会済みユーザー
2017/10/25 03:03
退会済みユーザー
2017/10/25 03:05
2017/10/25 03:52