【CakePHP2.x】Modelのfind()メソッド後のコールバック処理を適用する。

モデルごとのfind()処理直後に処理をかましたい場合。

モデルに下記のファンクションを定義すれば良い。
※関数のスコープや引数、引数の初期値まで同一でないと動作しないので注意。

例えば下記のような感じ。

class ModelName extends AppModel {
// find実行後、modelのバーチャルフィールドをリセットする
public function afterFind($results, $primary = false) {
	$this->virtualFields = [];
	return $results;
}

}

ここではfind()後に毎回モデルのバーチャルフィールドをリセットしている。
各モデルメソッドから動的にバーチャルフィールドを設定している場合に便利。

 

【jQueryUI】sortable()のtoArrayメソッドにオプションを渡す際。

渡し方めも。

var result = $('.selector').sortable('toArray', {attribute: 'value'});

と言った感じ。

 

【Javascript】Underscore.jsの拡張ライブラリ「Lo-Dash」。

Underscore.jsを拡張した超便利ライブラリを見つけたのでメモ。

http://lodash.com/

基本的にUnderscore.jsと同じ文法で使えて、色々と便利メソッドが追加されたイメージ。

おまけに動作までUnderscore.jsよりも速いらしい。

これは便利だね。

 

【PHP】Cookieを削除する。

削除というより時間切れのクッキーを上書きする感じ。
フレームワークばっか使ってると生PHPでの書き方ど忘れするね。

setcookie('cookie_name', '', time() - 1);

1秒でも時間を過ぎてればブラウザが自動的に削除するので上記のような感じでOK。

 

【MySQL】現在の時刻をコンテクストに合わせた形式で取得する。

関数がストリングで使用されているか、もしくは数値コンテキストで使用されているかによって、
現在の日付を ‘YYYY-MM-DD’ または YYYYMMDD フォーマットの値で返却する。

select curdate();

↓

'1997-12-15'


select curdate() + 0;

↓

19971215

 

【CakePHP2.x】ビューブロックの使い方まる2

使ったことのない方法を使ってみた。

ビュー側にて$this->start(),$this->end()を使ってみる。

<?php $this->start('hoge'); ?>
<div>びゅーぶろっく。</div>
<?php $this->end(); ?>

たとえば上記のようなhogeブロックをビューに記述したとする。
次にこのブロック内($this->end()が宣言されるまで)の内容を出力したいところで、
$this->fetch(‘hoge’)をechoすると内容が出力される。

便利で簡単だね。

 

【GIT】誤って削除したファイルを復元する。

ファイルを消してしまったなら、サーバーから復元すればいいじゃない!

ということで、復元したいファイルがあった場所まで移動して下記コマンドを実行すればOK。

git checkout .

うん。簡単。

 

【CakePHP2.x】アソシエーションの考え方自分用まとめ。

超絶今更シリーズ。

まずは公式より。

+ hasOne (A hasOne B) Aは1つのBを持っている
+ hasMany (A hasMany B) Aは複数のBを持っている
+ belongsTo (B belongsTo A) BはAに従属している
+ hasAndBelongsToMany(HABTM) (A HABTM B) AとBは複数のそれぞれを持っている

最初の3つはいいとして、問題は最後である。
HABTMは多対多の構造上、AとBを結びつけるABテーブルが必要であり、これがbelongsToの部分となる。
よって下記式が成り立つ。

A HABTM B =
(A hasMany AB) and (B hasMany AB) / (AB belongsTo A) and (AB belongsTo B)

ABテーブル内に、AとBの外部キーを保持している形となる。