勉強用に使いたいと思います。三日坊主の可能性大
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
DoctrineとMySQLの対応表が昔のSymfony Tutorialにあったようなのでパクッってきました。元はこちら
http://www.symfony-project.org/doctrine/1_2/ja/06-Working-With-Data
例:
(MySQL)
↓↑
(Doctrine)
又は、Doctrineでwhere句を書かずに
とかでもいけるかもしれません。(うろ覚え)
http://www.symfony-project.org/doctrine/1_2/ja/06-Working-With-Data
共通のAPI
| 関数名 | SQL | append | 説明 |
|---|---|---|---|
| where('u.username = ?', 'jwage') | u.username = ? | No | WHEREを設定して既存のWHERE<条件をオーバーライドする |
| andWhere('u.username = ?', 'jwage') | AND u.username = ? | Yes | ANDでappendされるWHERE条件を追加する |
| whereIn('u.id', array(1, 2, 3)) | AND u.id IN (?, ?, ?) | Yes | appendされるAND IN WHERE 条件を追加する |
| andWhereIn('u.id', array(1, 2, 3)) | ^ | Yes | whereIn()用のコンビニエンス/プロキシメソッド |
| orWhereIn('u.id', array(1, 2, 3)) | OR u.id IN (?, ?, ?) | Yes | appendされるOR IN WHERE条件を追加する |
| whereNotIn('u.id', array(1, 2, 3)) | AND u.id NOT IN (?, ?, ?) | Yes | appendされるAND NOT IN WHERE条件を追加する |
| andWhereNotIn('u.id', array(1, 2, 3)) | ^ | Yes | whereNotIn()用のコンビニエンス/プロキシメソッド |
| orWhereNotIn('u.id', array(1, 2, 3)) | OR u.id NOT IN (?, ?, ?) | Yes | appendされるOR NOT IN WHEREの条件を追加する |
| orWhere('u.username = ?', 'jwage') | OR u.username = ? | Yes | OR、WHERE条件を追加する |
| groupBy('u.id') | GROUP BY u.id, u.username | No | GROUP BYを設定して既存のGROUP BYをオーバーライドする |
| addGroupBy('u.username') | GROUP BY u.username | Yes | appendされるGROUP BYを追加する that is appended |
| having('num_phonenumbers > 0') | HAVING num_phonenumbers > 0 | No | HAVINGを設定して既存のHAVINGをオーバーライドする |
| addHaving('u.username = ?', 'jwage') | HAVING u.username = ? | Yes | 追加されるHAVINGを追加する |
選択のAPI
| 関数名 | 説明 |
|---|---|
| distinct($flag = true) | フラグをdistinct selectに設定する |
| select('u.id, u.username, COUNT(p.id) as num_phonenumbers') | SELECTを設定して既存のSELECTをオーバーライドする |
| addSelect('u.email_address') | appendされるselectを追加する |
| from('User u, u.Phonenumber p') | FROMを設定して既存のFROMとjoinをオーバーライドする |
| leftJoin('u.Phonenumber p') | FROMにappendされるLEFT JOINを追加する |
| innerJoin('u.Profile p') | FROMにappendされるINNER JOINを追加する |
| addFrom('u.Phonenumber p') | FROMにappendされるFROM joinを追加する |
| orderBy('u.username') | ORDER BYを設定して既存のORDER BYをオーバーライドする |
| addOrderBy('u.is_active = ?', 1) | appendされるORDER BYを追加する |
| limit(20) | 結果セットを制限するレコードの数を設定する |
| offset(5) | レコードの制限をオフセットする番号を設定する |
更新API
| 関数名 | 説明 |
|---|---|
| forUpdate($flag = true) | FOR UPDATEを使うためにクエリを変更する |
| update('User u') | UPDATEするモデルの名前を指定する |
| set('u.username', '?', 'jwage') | UPDATEクエリのために新しい値を設定する。最初の引数は修正するデータで、2番目はDQLの文字列に直接加える式(もしくはDBMS関数)、で3番目は新しい値。 |
削除API
| 関数名 | 説明 |
|---|---|
| delete() | 削除するクエリを変更する |
例:
(MySQL)
SELECT i.name FROM item i WHERE i.id=3↓↑
(Doctrine)
<?php
$table = Doctrine_Query::create()->select('i.name')
->from('Item i')
->where('i.id = ?', 3)
->execute();又は、Doctrineでwhere句を書かずに
$table = $table -> getId(3);とかでもいけるかもしれません。(うろ覚え)
PR
この記事にコメントする