yuu_nkjm blog
2014-11-20(Thu) [長年日記] 編集
[MySQL][openSUSE] MySQLの起動コマンド
service mysql startで起動しなくなってしまったので,rootになって以下のコマンドで無理矢理実行.
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/mysql.err --pid-file=/var/run/mysql/mysqld.pid --socket=/var/run/mysql/mysql.sock &
/etc/my.cnfに以下を設定している.
sql_mode=''
本当はmysqld_safe経由でmysqldを立ち上げるのが正しい様だ.
/bin/sh /usr/bin/mysqld_safe --mysqld=mysqld --user=mysql --pid-file=/var/run/mysql/mysqld.pid --socket=/var/run/mysql/mysql.sock --datadir=/var/lib/mysql &
2014-11-21(Fri) [長年日記] 編集
[CakePHP][PHP] CakePHPではまったこと,ちょっと分かったこと
まずはメモ
idという属性名以外の属性を主キーにする
以下のような指定が必要.
class User extends AppModel { public $primaryKey = 'user_id';
ctpファイルって沢山つくらなあかんの?
public function resumeRecentState($session_id) {$this->render('/Play/monitor');}
他のレンダラを指定してやればOK.
validation
saveから切り出して,CakePHP 2.x | コントローラ内でバリデーション処理を呼び出す方法.
Composerのインストール
zypper in php5-openssl php5-phar php5-mcrypt curl -sS https://getcomposer.org/installer | php # composer.jsonがあるディレクトリで以下を実行すると,依存ライブラリがダウンロードされる. php composer.phar install
debug関数
$this->log(print_r($obj, true));としてログを見ていた.グローバル関数としてdebug($obj)を呼び出すと,debugログが画面上に表示された.Config/??.phpのdebug logの指定の影響を受けるらしい.グローバル関数としてpr($obj)というのもあるようだ.Cakeで使うならdebugの方が良さそうだった.
DebugKit
便利そう.ただ,画面毎のデバッグになるので,リダイレクトを使うとログが見られなさそう.
save
saveの前に暗黙的にバリデーションが呼ばれる.改修前のプログラムがリダイレクトを多用しているせいで,バリデーションエラーなどが追いかけづらかった.
バリデーション
バリデーションにおいて,rule’ キーは必須です.
'mail' => array( array( 'rule' => 'email', ’required’ => false, ’allowEmpty’ => false, 'message' => array("validate_format", "label_mailaddress") ), array( 'rule' => array('maxLength', '100'), 'message' => array("validate_length", "label_mailaddress", "100") ) )
「rule」キーはバリデーションメソッドを定義します。単一の値と配列、いずれも使用できます。「rule」の指定は、モデル中に作成したメソッド名か、コアのバリデーションクラスのメソッド名、もしくは正規表現である必要があります。