質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

2067閲覧

xxx_id カラムが保存されない

popoko

総合スコア27

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

2クリップ

投稿2014/10/17 05:56

ModelクラスにてINSERT処理を行いたいのですが、
なぜか "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:文字列
`

lang

1<?php 2// Controller/TestController 3App::uses('AppController', 'Controller'); 4class TestController extends AppController { 5 public $uses = array('Test1', 'Test2); 6 public function index() {} // 入力フォーム 7 public function add() { 8 if ($this->request->is('post') && isset($this->request->data)) { 9 switch ($this->request->data["tableName"]) { 10 case 'Test1': 11 $this->Test1->insertData($this->request->data); 12 break; 13 case 'Test2': 14 $this->Test2->insertData($this->request->data); 15 break; 16 } 17 return $this->redirect(array('controller' => 'Test', 'action' => 'index')); 18 } 19 } 20} 21?>

lang

1<?php 2// Model/AppModel 3App::uses('Model', 'Model'); 4class AppModel extends Model { 5 var $db ; 6 function begin() { 7 $db = ConnectionManager::getDataSource($this->useDbConfig); 8 $db->begin($this); 9 } 10 function commit() { 11 $db = ConnectionManager::getDataSource($this->useDbConfig); 12 $db->commit($this); 13 } 14 function rollback() { 15 $db = ConnectionManager::getDataSource($this->useDbConfig); 16 $db->rollback($this); 17 } 18} 19?>

lang

1<?php 2// Model/Test1 3App::uses('AppModel', 'Model'); 4class Test1 extends AppModel { 5 public function insertData($postData) { 6 $data = array( 7 't1_display_no' => htmlspecialchars($postData["display_no"], ENT_QUOTES), 8 't1_option_value' => htmlspecialchars($postData["option_value"], ENT_QUOTES), 9 'created' => date('Y-m-d H:i:s'), 10 'created_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES), 11 'modified' => date('Y-m-d H:i:s'), 12 'modified_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES) 13 ); 14 $params = array('validate' => false); 15 $this->begin(); 16 try { 17 $this->create(); 18 $this->save($data, $params); 19 } catch (Exception $e) { 20 $this->rollback(); 21 } 22 $this->commit(); 23 } 24} 25?>

lang

1<?php 2// Model/Test1 3App::uses('AppModel', 'Model'); 4class Test2 extends AppModel { 5 public function insertData($postData) { 6 $data = array( 7 't2_display_no' => htmlspecialchars($postData["display_no"], ENT_QUOTES), 8 't2_option_value' => htmlspecialchars($postData["option_value"], ENT_QUOTES), 9 'created' => date('Y-m-d H:i:s'), 10 'created_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES), 11 'modified' => date('Y-m-d H:i:s'), 12 'modified_id' => htmlspecialchars($postData["user_id"], ENT_QUOTES) 13 ); 14 $params = array('validate' => false); 15 $this->begin(); 16 try { 17 $this->create(); 18 $this->save($data, $params); 19 } catch (Exception $e) { 20 $this->rollback(); 21 } 22 $this->commit(); 23 } 24} 25?>

`

<!-- 実行されたクエリ -->

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
`

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

外部キーとしてモデル名単数形+_idがデフォルトとして使用されるらしいです。
外部結合しないカラム名として、末尾に_idは使用しないようにする必要がありそうです。

別のフレームワークからCakePHPに移行する場合の記事を見かけました。
http://plmin.us/blog/2013/01/17/cakephp-cake-bakemodel/
ここに末尾_idからリネームした旨が記載されていました。

投稿2014/10/27 05:02

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問