#php #php #cakephp #model #orm
$this->Ingredient->save($newData);
$newIngredientId = $this->Ingredient->id;    // OK
// id以外のフィールドはダメ
$this->Ingredient->name;    // NG
$this->Ingredient->category;    // NG

登録/更新には関係なく。 公式マニュアルでは:

一度保存が完了してしまうと、オブジェクトの ID をモデルオブジェクトの $id プロパティで取得することができます。特に新しいオブジェクトを生成した場合に便利です。

と書いてありますが、id以外のフィールド情報は持ってないようです。 欲しければ$this->dataから取れます。

#php #php #string
/##
 #  文字列を全て半角に
 #  @param  string $str 文字列
 #  @return string $str 半角の文字列
 # /
function toHankaku($str) {
    $str= mb_convert_kana($str,"rnask");
    return $str;
}
#php #php

$_GET、 $_POST そして $_COOKIE の内容をまとめた連想配列です。

もう少し説明を加えると、

In the beginning of execution, $_REQUEST is a clone of $_GET. $_POST is then merged into the array, overwriting keys if they exist in both $_GET and $_POST. Finally, $_COOKIE is merged into the array, again overwriting old values.

まずは$_GETのクローンでそこに$_POSTをマージする感じで、同じキーのものがあれば上書きされます。同じくその後$_COOKIEもマージします。 なので本当にPOSTで受取るものは$_REQUESTに書き換えてはいけないと思いますね。

#mysql #sql

1000件くらいのinsert文を用意して、それをコピって一気にmysqlのコマンドラインに貼りつけたらうまく行かなかったんです。sql文に文法的間違いがなくてもエラーとなったり、表示が崩れたりしました。数件なら多分まだいいんですけど、さすが1000件だと(コマンドラインに貼り付けるやり方では)処理が追えない気がします。

それらのsql文をファイルに保存し実行すれば問題なかったので、以下がそのコマンドです。

mysql> source file_name
--あるいは
mysql> \. file_name

また下記文を書けば進捗情報が見れるとMySQLのレファレンスで書かれてますが、時間の関係上今回は試してませんでした。

SELECT '<info_to_display>' AS ' ';

参考: http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html

#mysql #sqlite #transaction

autocommitの値を持ちましてMySQLでのトランザクションを制御できます。

--暗黙(自動)コミットを無効に
SET AUTOCOMMIT = 0;
--トランザクション開始
BEGIN;

--SQL文をながす
UPDATE...
INSERT...

--コミット
COMMIT;
--あるいはロールバック
ROLLBACK;

--暗黙(自動)コミットを有効に
SET AUTOCOMMIT = 1;

--暗黙(自動)コミットのステータスを確認
SELECT @@AUTOCOMMIT;

DataSource Beanを定義する際applicationContext.xmlの書き方と、Javaで呼び出すコードのメモです。ずいぶん昔のメモです。。

こんなjdbc.propertiesファイルがクラスパスにあるとします。

jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:~/test
jdbc.username=sa
jdbc.password=

そしてSpringのapplicationContext.xmlにはこう書きます。

<context:property-placeholder location="jdbc.properties"/>

<bean id="dataSource"
	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="${jdbc.driverClassName}" />
	<property name="url" value="${jdbc.url}" />
	<property name="username" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
</bean>


<bean id="accountDao" class="test.dao.AccountDao">
	<property name="dataSource" ref="dataSource" />
</bean>

Javaでの呼び出し:

ApplicationContext context = new ClassPathXmlApplicationContext(
		"applicationContext.xml");

AccountDao accountDao = (AccountDao) context.getBean("accountDao");

// other code...