Posts tagged ‘CakePHP’

2012年2月29日

CakePHPでバッチ処理をする

CakePHP を crontab でバッチ処理をしたかったので調べてみると、いくつかの方法があるようだが理解しやすそうな方法を選んでみた。
crontabとCakePHPでバッチ処理をする

ちなみに対象は CakePHP2.0 となるので CakePHP1.3 を対象としている参考サイトでのパッケージ構成は変更されている。

read more »

タグ: ,
2012年1月30日

アソシエーションを一時解除する

hasOne や hasMany などでアソシエーションを作っておくと、常にその関連テーブルは対象のModel にくっついています。
場合によっては対象のModel単体のpagenateを取得したいとき、アソシエーションの一時解除が可能です。


 $this->Model->recursive = -1;
 print_r($this->Model->pagenate()); // アソシエーションされない
 $this->Model->recursive = 1;
 print_r($this->Model->pagenate()); // アソシエーションされる(通常通り)

recursive についてはこちらを参照のこと ↓
recursiveの正しい理解CakePHP

タグ:
2011年8月3日

ログインするとfavicon.icoに遷移する

AuthComponentを使っている場合、たまにログイン後の遷移先が http://…/favicon.ico となるケースが存在する。
また、Auth認証前に認証が必要なページにアクセスした際も、リファラ情報として保持されて再度Auth認証後の遷移先が意図しないケースも存在する。
そこで遷移先の固定化を図る。
Authコンポーネントで、ログイン後の遷移先を固定する

users_controller.phpにて

function beforeFilter(){
$this->Auth->loginRedirect = array('controller' => 'hoge', 'action' => 'view');
}

function login(){
$this->Session->delete('Auth.redirect');
}

タグ:
2011年7月21日

$conditions にOR条件を設定する

$conditions への検索条件の追記では AND検索になるので OR条件での設定を調べてみた。


$conditions = array("Post.modified BETWEEN ? AND ?" => array($from,$to));
$conditions = $conditions + array('or' => array( array('Post.comment_cnt ' => '0'), array('Post.favarate_cnt ' => '0')));
$this->paginate = array('limit' => $limit, 'order' => array('Post.modified DESC'));
$data = $this->paginate('Post',$conditions);
$this->set('posts', $data);

モデルのcondition配列の展開(CakePHP)

タグ:
2011年7月14日

paginate関連のパラメータ取得

非常に便利な helperを自作していただいたので転記する。
仮想化する僕たち

view側で簡単にpage関連の情報を扱うことができない。例えば現在のページとか、全部で何ページあるのかとか・・・。

まず、appフォルダ以下にapp_helper.phpを作成

params['paging'][$this->defaultModel()];
if($key == "start")
return ife($paging['count'] >= 1, ($paging['page'] - 1) * ($paging['options']['limit']) + 1, '0');
else if($key == "end"){
$start = ife($paging['count'] >= 1, ($paging['page'] - 1) * ($paging['options']['limit']) + 1, '0');
return ife(($paging['count'] Html->url(array('page' => $page));
}
}

read more »

タグ:
2011年6月29日

フォームにパラメータを追加する

/app/controller/action/$id のようにFormHelper::create() で作成するフォームにパラメータ $id を追加するには、第2引数の’url’ にハッシュを加える。

echo $form->create('...', array('url' => array($id)));

フォームにurl指定で id を自動追加したくない場合は以下のようにする。

echo $form->create('...', array('url' => array('id' => null, $id)));

paginator->numbers() も同様にパラメータを追加できる。

echo $paginator->numbers('...', array('url' => array($id)));

タグ: