Browse Source

docs/guide-ja/db-query-builder.md - minor fixes [ci skip]

tags/2.0.3
Nobuo Kihara 10 years ago
parent
commit
bac9f132e4
  1. 24
      docs/guide-ja/db-query-builder.md

24
docs/guide-ja/db-query-builder.md

@ -3,7 +3,7 @@
> Note|注意: この節はまだ執筆中です。
[データベースの基礎](db-dao.md) の節で説明したように、Yii は基本的なデータベースアクセスレイヤを提供します。
[データベースの基礎](db-dao.md) の節で説明したように、Yii は基本的なデータベースアクセスレイヤを提供しています。
このデータベースアクセスレイヤは、データベースと相互作用するための低レベルな方法を提供するものです。
それが有用な状況もありますが、生の SQL を書くことは面倒くさく、間違いを生じやすいものでもあります。
これに取って代る方法の一つがクエリビルダを使用することです。
@ -78,11 +78,11 @@ $query->select(['id', 'name'])
> Info|情報: `SELECT` 句が SQL 式を含む場合は、常に配列形式を使うべきです。
> これは、`CONCAT(first_name, last_name) AS full_name` のように、SQL 式がカンマを含みうるからです。
> そういう式を他のカラムと一緒に文字列の中に含めると、式がカンマによっていくつかの部分に分されるおそれがあります。
> そういう式を他のカラムと一緒に文字列の中に含めると、式がカンマによっていくつかの部分に分されるおそれがあります。
> それはあなたの意図するところではないでしょう。
カラムを指定するときは、例えば `user.id``user.id AS user_id` などのように、テーブル接頭辞やカラムエイリアスを含めることが出来ます。
カラムを指定するのに配列を使っている場合は、例えば `['user_id' => 'user.id', 'user_name' => 'user.name']` のように、配列のキーを使ってカラムエイリアスを指定することも出来ます。
カラムを指定するときは、例えば `user.id``user.id AS user_id` などのように、テーブルプレフィクスやカラムエイリアスを含めることが出来ます。
カラムを指定するのに配列を使場合は、例えば `['user_id' => 'user.id', 'user_name' => 'user.name']` のように、配列のキーを使ってカラムエイリアスを指定することも出来ます。
バージョン 2.0.1 以降では、サブクエリをカラムとしてセレクトすることも出来ます。例えば、
@ -101,14 +101,14 @@ $query->select('user_id')->distinct()->from('post');
### `FROM`
どのテーブルからデータを取得するかを指定するために `from()` を呼びます。
データを取得するテーブル (一つまたは複数) を指定するためには、`from()` を呼びます。
```php
$query->select('*')->from('user');
```
カンマ区切りの文字列または配列を使って、複数のテーブルを指定することが出来ます。
テーブル名は、スキーマ接頭辞 (例えば `'public.user'`)、 および/または、テーブルエイリアス (例えば、`'user u'`) を含んでも構いません。
テーブル名は、スキーマプレフィクス (例えば `'public.user'`)、 および/または、テーブルエイリアス (例えば、`'user u'`) を含んでも構いません。
テーブル名が何らかの括弧を含んでいる場合 (すなわち、テーブルがサブクエリまたは DB 式で与えられていることを意味します) を除いて、メソッドが自動的にテーブル名を引用符で囲みます。
例えば、
@ -304,9 +304,9 @@ $query->filterWhere([
```
`filterWhere()` メソッドは `where()` と非常によく似ています。
主な相違点は、`filterWhere()` は与えられた条件から空の値を削除する、ということです。
従って、`$email` がである場合は、結果として生成されるクエリは `...WHERE username=:username` となります。
そして、`$username` と `$email` が両方ともである場合は、クエリは `WHERE` の部分を持ちません。
主な相違点は、`filterWhere()` は与えられた条件から空の値のものを削除する、ということです。
従って、`$email` が空である場合は、結果として生成されるクエリは `...WHERE username=:username` となります。
そして、`$username` と `$email` が両方とも空である場合は、クエリは `WHERE` の部分を持ちません。
値が *空* であるのは、null、空文字列、空白文字だけの文字列、または、空配列である場合です。
@ -363,13 +363,13 @@ $query->offset(100);
### `JOIN`
適切な結合メソッドを使って、クエリビルダで `JOIN` 句を生成することが出来ます。
クエリビルダで `JOIN` 句を生成するために、次の結合メソッドを適用することが出来ます。
- `innerJoin()`
- `leftJoin()`
- `rightJoin()`
次の左外部結合では、二つの関連テーブルから一つのクエリでデータを取得しています。
次の例では、左外部結合を使って二つの関連するテーブルから一つのクエリでデータを取得しています。
```php
$query->select(['user.name AS author', 'post.title as title'])
@ -389,7 +389,7 @@ $query->join('FULL OUTER JOIN', 'post', 'post.user_id = user.id');
最初のパラメータが実行する結合タイプです。第二は結合するテーブル、第三は結合の条件です。
`FROM` と同様に、サブクエリを結合することも出来ます。
そのためには、一つの要素を持つ配列としてサブクエリを指定します。
そのためには、一つだけの要素を持つ配列としてサブクエリを指定します。
配列の値はサブクエリを表す `Query` オブジェクトとし、配列のキーはサブクエリのエイリアスとしなければなりません。
例えば、

Loading…
Cancel
Save