めも。
$this->Model->find('all', [ 'conditions' => [ 'Model.col_1 between ? and ?' => [2, 15] ] ]);
といった感じで指定する。
めも。
$this->Model->find('all', [ 'conditions' => [ 'Model.col_1 between ? and ?' => [2, 15] ] ]);
といった感じで指定する。
いわゆるbr2nl()。
function br2nl($string) { return preg_replace('/<br[[:space:]]*\/?[[:space:]]*>/i', "\n", $string); }
モデルごとのfind()処理直後に処理をかましたい場合。
モデルに下記のファンクションを定義すれば良い。
※関数のスコープや引数、引数の初期値まで同一でないと動作しないので注意。
例えば下記のような感じ。
class ModelName extends AppModel { // find実行後、modelのバーチャルフィールドをリセットする public function afterFind($results, $primary = false) { $this->virtualFields = []; return $results; } }
ここではfind()後に毎回モデルのバーチャルフィールドをリセットしている。
各モデルメソッドから動的にバーチャルフィールドを設定している場合に便利。
削除というより時間切れのクッキーを上書きする感じ。
フレームワークばっか使ってると生PHPでの書き方ど忘れするね。
setcookie('cookie_name', '', time() - 1);
1秒でも時間を過ぎてればブラウザが自動的に削除するので上記のような感じでOK。
使ったことのない方法を使ってみた。
ビュー側にて$this->start(),$this->end()を使ってみる。
<?php $this->start('hoge'); ?> <div>びゅーぶろっく。</div> <?php $this->end(); ?>
たとえば上記のようなhogeブロックをビューに記述したとする。
次にこのブロック内($this->end()が宣言されるまで)の内容を出力したいところで、
$this->fetch(‘hoge’)をechoすると内容が出力される。
便利で簡単だね。
超絶今更シリーズ。
まずは公式より。
+ 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の外部キーを保持している形となる。
array_diff()は要素の文字列比較なため、要素の中に更に配列をセットしている場合、「string(5) “Array”」として比較されてしまうので注意が必要。
公式にも書いてあるね。
注意: 二つの要素は、(string) $elem1 === (string) $elem2 の場合のみ等しいと見直されます。言い換えると、文字列表現が同じ場合となります。
http://www.php.net/manual/ja/function.array-diff.php
めも。
foreach($rows as $row) { if(end($rows) !== $row) { // 最後じゃない場合の処理 echo ','; } }
ループ中にimplode()的なことをやりたい時に便利。