Welcome to the Cookbook

loading...

3.7.3.4 query

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

query(string $query)

モデルの query() メソッドを使用すると独自の SQL 呼び出しを作成できます。

アプリケーションで独自の SQL クエリーを使用している場合、CakePHP の Sanitize ライブラリ(このマニュアルの後で説明されています)を必ず参照してください。SQL インジェクションやクロスサイトスクリプティング攻撃を防ぐためにユーザデータをきれいにする目的があります。

query() は、モデルの呼び出しとは本質的に分離した機能で、 $Model->cachequeries の状態に従いません。query を呼び出すにあたりキャッシングを無効にするには、query($query, $cachequeries = false) というように第2引数に false を設定します。

query() のクエリ文中ではモデル名でなく、テーブル名を使用し、返却される配列のキーもテーブル名になります。例えば、

$this->Picture->query("SELECT * FROM pictures LIMIT 2;");
  1. $this->Picture->query("SELECT * FROM pictures LIMIT 2;");

これの戻り値は以下の通りです。

Array
(
    [0] => Array
        (
            [pictures] => Array
                (
                    [id] => 1304
                    [user_id] => 759
                )
        )

    [1] => Array
        (
            [pictures] => Array
                (
                    [id] => 1305
                    [user_id] => 759
                )
        )
)
  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [pictures] => Array
  6. (
  7. [id] => 1304
  8. [user_id] => 759
  9. )
  10. )
  11. [1] => Array
  12. (
  13. [pictures] => Array
  14. (
  15. [id] => 1305
  16. [user_id] => 759
  17. )
  18. )
  19. )

配列のキー値にモデル名を使用し、Findメソッドを使用した時との一貫性を持たせる場合は、クエリは以下のようにします:

$this->Picture->query("SELECT * FROM pictures AS Picture LIMIT 2;");
  1. $this->Picture->query("SELECT * FROM pictures AS Picture LIMIT 2;");

戻り値は次のようになります。

Array
(
    [0] => Array
        (
            [Picture] => Array
                (
                    [id] => 1304
                    [user_id] => 759
                )
        )

    [1] => Array
        (
            [Picture] => Array
                (
                    [id] => 1305
                    [user_id] => 759
                )
        )
)
  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [Picture] => Array
  6. (
  7. [id] => 1304
  8. [user_id] => 759
  9. )
  10. )
  11. [1] => Array
  12. (
  13. [Picture] => Array
  14. (
  15. [id] => 1305
  16. [user_id] => 759
  17. )
  18. )
  19. )