xxx_id カラムが保存されない
解決済
回答 1
投稿 ・編集
- 評価
- クリップ 2
- VIEW 1,326
なぜか "created_id" と "modified_id" カラムが登録されません。(空白になります。)
これはCakeの命名規則によるものでしょうか?
それとも処理に不備があるのでしょうか?
($this->saveまでの$dataは問題なく"created_id" と "modified_id"データが入っております。)
毎度毎度初歩的な質問をしてしまい申し訳ありませんが、
アドバイス頂けたらと思います。
以下、ソースです。
<!-- DB構造 -->
<!-- tableName:Test1 -->
t1_code int(5) a/i
t1_display_no int(5)
t1_option_value varchar(30)
created datetime
created_id varchar(15)
modified timestamp
modified_id varchar(15)
<!-- tableName:Test2 -->
t2_code int(5) a/i
t2_display_no int(5)
t2_option_value varchar(30)
created datetime
created_id varchar(15)
modified timestamp
modified_id varchar(15)
<!-- post内容 -->
table_name:文字列
deisplay_no:数値
option_value:文字列
user_id:文字列
<?php
// Controller/TestController
App::uses('AppController', 'Controller');
class TestController extends AppController {
public $uses = array('Test1', 'Test2);
public function index() {} // 入力フォーム
public function add() {
if ($this->request->is('post') && isset($this->request->data)) {
switch ($this->request->data["tableName"]) {
case 'Test1':
$this->Test1->insertData($this->request->data);
break;
case 'Test2':
$this->Test2->insertData($this->request->data);
break;
}
return $this->redirect(array('controller' => 'Test', 'action' => 'index'));
}
}
}
?>
<?php
// Model/AppModel
App::uses('Model', 'Model');
class AppModel extends Model {
var $db ;
function begin() {
$db = ConnectionManager::getDataSource($this->useDbConfig);
$db->begin($this);
}
function commit() {
$db = ConnectionManager::getDataSource($this->useDbConfig);
$db->commit($this);
}
function rollback() {
$db = ConnectionManager::getDataSource($this->useDbConfig);
$db->rollback($this);
}
}
?>
<?php
// Model/Test1
App::uses('AppModel', 'Model');
class Test1 extends AppModel {
public function insertData($postData) {
$data = array(
't1_display_no' => htmlspecialchars($postData["display_no"], ENT_QUOTES),
't1_option_value' => htmlspecialchars($postData["option_value"], ENT_QUOTES),
'created' => date('Y-m-d H:i:s'),
'created_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES),
'modified' => date('Y-m-d H:i:s'),
'modified_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES)
);
$params = array('validate' => false);
$this->begin();
try {
$this->create();
$this->save($data, $params);
} catch (Exception $e) {
$this->rollback();
}
$this->commit();
}
}
?>
<?php
// Model/Test1
App::uses('AppModel', 'Model');
class Test2 extends AppModel {
public function insertData($postData) {
$data = array(
't2_display_no' => htmlspecialchars($postData["display_no"], ENT_QUOTES),
't2_option_value' => htmlspecialchars($postData["option_value"], ENT_QUOTES),
'created' => date('Y-m-d H:i:s'),
'created_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES),
'modified' => date('Y-m-d H:i:s'),
'modified_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES)
);
$params = array('validate' => false);
$this->begin();
try {
$this->create();
$this->save($data, $params);
} catch (Exception $e) {
$this->rollback();
}
$this->commit();
}
}
?>
<!-- 実行されたクエリ -->
BEGIN
INSERT INTO `caketest`.`test1` (`modified`, `t1_display_no`, `t1_option_value`, `created`) VALUES ('2014-10-16 20:29:47', 1, 'AAA', '2014-10-16 20:29:47')
COMMIT
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
_id
がデフォルトとして使用されるらしいです。
外部結合しないカラム名として、末尾に
_id
は使用しないようにする必要がありそうです。
別のフレームワークからCakePHPに移行する場合の記事を見かけました。
http://plmin.us/blog/2013/01/17/cakephp-cake-bakemodel/
ここに末尾
_id
からリネームした旨が記載されていました。投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.19%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる