情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

CakePHPでSQLを使いデータを出力する

以前データをカテゴリーごとに出力するという記事を投稿したのですが findではなくSQLでデータを持ってくる処理を実装したので記載致します。

以前の記事 nonaka-katuma-hal.hatenablog.com

1データの取得とModelへの引き渡し

こちらに関してはControllerでViewからPOSTされたデータを受け取る所まで前回の記事と同じなのでそちらを参考にしていただければと思います。

Controllerでcheckboxのデータを受け取るときに以下のように記載します。

//選択されたidを配列で取得します。
$category_id = $this->request->data['Article']['category'];

//こちらは前回と同じ要領でデータの受け渡しと記事データの取得をします
$selected_articles = $this->Article->get_selected_articles($category_id);
//こちらも前回と同じ要領でViewに記事データを渡します
$this->set('selected_articles',$selected_articles );

2.SQLでデータを抽出する

それではModel側でSQLを使いデータを出力していきます

public function get_selected_articles($category_id) {
    //渡されたカテゴリーidをカンマ区切りの文字列に変換する
    $category_id_str = implode("," , $category_id);

    //選択された条件で記事データを抽出する
    $sql = "SELECT *
    FROM articles
    //選択されたカテゴリーidを含んだ記事データだけを抽出する
    WHERE articles.category_id IN ($category_id_str)";

    //抽出したデータを$dataに代入する
    $data = $this->query($sql);
    return $data;
}

以上がSQLを使ったデータの取得方法になります あまり前回の記事とやっていることが変わらないかと思いますが。 このようにSQLを使うことで複雑な条件でデータの取得ができるようになります。

そのあたりはまた別の記事で紹介したいと思います。

それでは