CakePHPのPaginateで条件を指定する
ET withwithとかわいらしい愛称をつけた僕専用WEBサービスですが、ちょっと色々カスタマイズを始めております。昨日から悩んでいたのが、カテゴリやクライアントの値をクリックすると、それぞれのカテゴリやクライアントの個別のビューが表示されていたのですが、これをカテゴリやクライアントで絞り込んだテーブルの一覧を表示するように変えたいなあと。
通常はこんな感じで呼び出してますね。
contents_controller.php
function index() {
$this->Content->order = "date DESC";
$this->set(‘contents’, $this->paginate());
}
これだと全部取ってくるので条件を指定して、別のfunctionを作りました。
contents_controller.php
function view_category($id = null) {
$this->Content->order = "date DESC";
$this->paginate = array("conditions" => array("Content.category_id" => $id));
$this->set(‘contents’, $this->paginate());
}
で、index.ctpなどで呼び出すところに、
index.ctp
<?php echo $html->link($content[‘Category’][‘category’], array(‘controller’ => ‘contents’, ‘action’ => ‘view_category’, $content[‘Category’][‘id’])); ?>
として、view_categoryを呼び出し、その時渡されるcategory_idを使って、contents_controllerで条件で絞り込みしているわけです、はい。とりあえず、view_category_ctpの内容はindex.ctpの内容まるまるコピーで大丈夫(後でカスタマイズするかもなので別ファイルにしました)。以上はこちらを参考にしました。
[cakePHP1.2] paginateで条件文にLIKE,ORを指定する方法: PHPを使ったWebサイト構築 備忘録
なんかどこぞのサイトで書いてありましたが、プログラミングをしているというより、パズルのピースを組み合わせているような感じですね、CakePHP。

加藤 康祐 / 企画・設計
プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。
是非、フォローしてください!
Twitter / Instagram
売り上げランキング: 14,705
100円
フリーランスとして働き始めるってどういうことだったのか?フリーランスとして働くってどういうことなのか?フリーランスが目指すことってなんなのか?5年間の自分の経験から書きました。(2010年執筆)