Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Rotua Panjaitan
yii2
Commits
a081ae5e
Commit
a081ae5e
authored
Nov 28, 2014
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja/start-databases.md - revised [ci skip]
parent
3969cdbc
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
38 deletions
+31
-38
start-databases.md
docs/guide-ja/start-databases.md
+31
-38
No files found.
docs/guide-ja/start-databases.md
View file @
a081ae5e
...
...
@@ -2,15 +2,14 @@
==================
この節では、
`country`
という名前のデータベーステーブルから読み出した国データを表示する新しいページの作り方を説明します。
この目的を達するために、データベース接続を構成し、
[
アクティブレコード
](
db-active-record.md
)
クラスを作成し、
[
アクション
](
structure-controllers.md
)
を定義し、そして
[
ビュー
](
structure-views.md
)
を作成します。
この目的を達するために、データベース接続を構成し、
[
アクティブレコード
](
db-active-record.md
)
クラスを作成し、
[
アクション
](
structure-controllers.md
)
を定義し、そして
[
ビュー
](
structure-views.md
)
を作成します。
このチュートリアルを通じて、次のことを
する方法を学びます:
このチュートリアルを通じて、次のことを
学びます。
*
DB 接続を構成する
*
アクティブレコードのクラスを定義する
*
アクティブレコードのクラスを使ってデータを検索する
*
改ページを伴う
方法でビューにデータを表示する
*
DB 接続を構成する
方法
*
アクティブレコードのクラスを定義する
方法
*
アクティブレコードのクラスを使ってデータを検索する
方法
*
改ページを伴う
仕方でビューにデータを表示する方法
この節を完了するためには、データベースを使うことについて基本的な知識と経験が無ければならないことに注意してください。
具体的に言えば、DB クライアントツールを用いてデータベースを作成する方法と、SQL 文を実行する方法を知っていなければなりません。
...
...
@@ -21,12 +20,11 @@
まず初めに、
`yii2basic`
という名前のデータベースを作成してください。このデータベースからアプリケーションにデータを読み出すことになります。
作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選んでください。
Yii は多数のデータベース製品に対するサポートを組み込みで持っています。
Yii は多数のデータベース製品に対するサポートを内蔵していますので、作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選ぶことが出来ます。
以下の説明では、話を単純にするために、MySQL を前提とします。
次に、データベースに
`country`
という名前のテーブルを作り、いくつかのサンプルデータを挿入します。
そうするために
、次の SQL 文を実行することが出来ます:
そうするために
は、次の SQL 文を実行することが出来ます。
```
sql
CREATE
TABLE
`country`
(
...
...
@@ -47,8 +45,7 @@ INSERT INTO `country` VALUES ('RU','Russia',146934000);
INSERT
INTO
`country`
VALUES
(
'US'
,
'United States'
,
278357000
);
```
この時点で、あなたは
`yii2basic`
という名前のデータベースを持ち、その中に三つのカラムを持つ
`country`
というテーブルを持っています。
そして、
`country`
テーブルは、10 行のデータを持っています。
この時点で、あなたは
`yii2basic`
という名前のデータベースを持ち、その中に三つのカラムを持つ
`country`
というテーブルがあり、
`country`
テーブルは 10 行のデータを持っている、ということになります。
DB 接続を構成する<a name="configuring-db-connection"></a>
...
...
@@ -58,8 +55,7 @@ DB 接続を構成する<a name="configuring-db-connection"></a>
(例えば、MySQL のための
`pdo_mysql`
) の両方をインストール済みであることを確認してください。
アプリケーションがリレーショナルデータベースを使う場合、これは基本的な必要条件です。
これらがインストール済みなら、
`config/db.php`
というファイルを開いて、あなたのデータベースに適合するように
パラメータを変更してください。既定値では、このファイルは下記の記述を含んでいます:
これらがインストール済みなら、
`config/db.php`
というファイルを開いて、あなたのデータベースに適合するようにパラメータを変更してください。デフォルトでは、このファイルは下記の記述を含んでいます。
```
php
<?php
...
...
@@ -73,15 +69,15 @@ return [
];
```
この
`config/db.php`
というファイルは典型的なファイルベースの
[
コンフィギュレーション
](
concept-configurations.md
)
ツールです。
この
コンフィギュレーション
ファイルが
[
[yii\db\Connection
]
] インスタンスの作成と初期化に必要なパラメータを規定します。そして、
[
[yii\db\Connection
]
] インスタンスを通じて、背後のデータベースに対
して
SQL クエリを実行することが出来るようになります。
この
`config/db.php`
というファイルは典型的なファイルベースの
[
構成情報
](
concept-configurations.md
)
の
ツールです。
この
構成情報
ファイルが
[
[yii\db\Connection
]
] インスタンスの作成と初期化に必要なパラメータを規定します。そして、
[
[yii\db\Connection
]
] インスタンスを通じて、背後のデータベースに対
する
SQL クエリを実行することが出来るようになります。
上記のようにして構成された DB 接続は、アプリケーションコードの中で
`Yii::$app->db`
という式でアクセスすることが出来ます。
> Info|情報: `config/db.php` は、メインのアプリケーション
コンフィギュレーション
ファイルである `config/web.php` にインクルードされます。
> Info|情報: `config/db.php` は、メインのアプリケーション
構成情報
ファイルである `config/web.php` にインクルードされます。
この
`config/web.php`
が
[
アプリケーション
](
structure-applications.md
)
インスタンスが初期化される仕方を規定します。
更なる情報については、
[
コンフィギュレーション
](
concept-configurations.md
)
の節を参照してください。
詳しい情報については、
[
構成情報
](
concept-configurations.md
)
の節を参照してください。
アクティブレコードを作成する<a name="creating-active-record"></a>
...
...
@@ -105,9 +101,9 @@ class Country extends ActiveRecord
`Country`
クラスは
[
[yii\db\ActiveRecord
]
] を拡張しています。この中には一つもコードを書く必要はありません。
単に上記のコードだけで、Yii は関連付けられたテーブル名をクラス名から推測します。
> Info|情報: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に
規
定することが出来ます。
> Info|情報: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に
指
定することが出来ます。
`Country`
クラスを使うことによって、以下のコード断片で示すように、
`country`
テーブルの中のデータを簡単に操作することが出来ます
:
`Country`
クラスを使うことによって、以下のコード断片で示すように、
`country`
テーブルの中のデータを簡単に操作することが出来ます
。
```
php
use
app\models\Country
;
...
...
@@ -127,18 +123,16 @@ $country->save();
```
> Info|情報: アクティブレコードは、オブジェクト指向の流儀でデータベースのデータにアクセスし、操作する強力な方法です。
[
アクティブレコード
](
db-active-record.md
)
の節で、更に詳細な情報を得ることが出来ます。
もう一つの方法として、
[
データアクセスオブジェクト(DAO)
](
db-dao.md
)
と呼ばれる、より低レベルなデータアクセス方法を使って
データベースを操作することも出来ます。
[
アクティブレコード
](
db-active-record.md
)
の節で、詳細な情報を得ることが出来ます。
もう一つの方法として、
[
データアクセスオブジェクト
](
db-dao.md
)
と呼ばれる、より低レベルなデータアクセス方法を使ってデータベースを操作することも出来ます。
アクションを作成する<a name="creating-action"></a>
--------------------
国データをエンドユーザに見えるようにするために、新しいアクションを作成する必要があります。
これまでの節でしたように
`site`
コントローラの中に新しいアクションを置くのではなく、国データに関係する全てのアクションに
限定した新しいコントローラを作成する方が理にかなうでしょう。この新しいコントローラを
`CountryController`
と名付けます。
そして、下記に示すように、
`index`
アクションをその中に作成します。
これまでの節でしたように
`site`
コントローラの中に新しいアクションを置くのではなく、国データに関係する全てのアクションに限定した新しいコントローラを作成する方が理にかなうでしょう。
この新しいコントローラを
`CountryController`
と名付けます。そして、下記に示すように、
`index`
アクションをその中に作成します。
```php
...
...
@@ -179,9 +173,9 @@ class CountryController extends Controller
`index`
アクションは
`Country::find()`
を呼び出します。
このアクティブレコードのメソッドは DB クエリを構築して、
`country`
テーブルから全てのデータを読み出します。
一回のリクエストで返される国の数を制限するために、クエリは
[
[yii\data\Pagination
]
] オブジェクトの助けを借りてページ付けされます。
`Pagination`
オブジェクトは二つの目的に奉仕します
:
`Pagination`
オブジェクトは二つの目的に奉仕します
。
*
クエリによって表現される SQL 文に
`offset`
句と
`limit`
句をセットして、一度に一ページ分のデータだけ (1ページ最大5行)を返すようにします。
*
クエリによって表現される SQL 文に
`offset`
句と
`limit`
句をセットして、一度に一ページ分のデータだけ (1ページ最大5行)
を返すようにします。
*
次の項で説明されるように、一連のページボタンからなるページャをビューに表示するために使われます。
コードの最後で、
`index`
アクションは
`index`
と言う名前のビューをレンダリングしていますが、このとき、国データはもちろん、そのページ付け情報もビューに渡されます。
...
...
@@ -192,7 +186,7 @@ class CountryController extends Controller
最初に、
`views`
ディレクトリの下に
`country`
という名前のサブディレクトリを作ってください。
このフォルダが
`country`
コントローラによって表示される全てのビューを保持するのに使われます。
`views/country`
ディレクトリの中に、下記のコードを含む
`index.php`
という名前のファイルを作成します
:
`views/country`
ディレクトリの中に、下記のコードを含む
`index.php`
という名前のファイルを作成します
。
```
php
<?php
...
...
@@ -214,15 +208,14 @@ use yii\widgets\LinkPager;
ビューは国データの表示に関連して二つの部分に分けられます。
最初の部分では、提供された国データがたどられて、HTML の順序無しリストとしてレンダリングされます。
第二の部分では、アクションから渡されたページ付け情報を使って、
[
[yii\widgets\LinkPager
]
]
ウィジェットがレンダリングされます。
第二の部分では、アクションから渡されたページ付け情報を使って、
[
[yii\widgets\LinkPager
]
] ウィジェットがレンダリングされます。
`LinkPager`
ウィジェットはページボタンのリストを表示します。ボタンのどれかをクリックすると、対応するページの国データが更新表示されます。
試してみる<a name="trying-it-out"></a>
----------
上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします
:
上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします
。
```
http://hostname/index.php?r=country/index
...
...
@@ -232,8 +225,8 @@ http://hostname/index.php?r=country/index
最初、ページは5つの国を表示しています。
そして、国リストの下には、4つのボタンを持ったページャがあります。
"2" のボタンをクリックすると、ページはデータベース
から
次の5つの国、すなわち、2ページ目のレコードを表示します。
より注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう:
"2" のボタンをクリックすると、ページはデータベース
にある
次の5つの国、すなわち、2ページ目のレコードを表示します。
注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう。
```
http://hostname/index.php?r=country/index&page=2
...
...
@@ -241,8 +234,8 @@ http://hostname/index.php?r=country/index&page=2
舞台裏では、
[
[yii\data\Pagination|Pagination
]
] が、データセットをページ付けするのに必要な全ての機能を提供しています。
*
最初
、
[
[yii\data\Pagination|Pagination
]
] は、1ページ目を表しています。
これ
は、国の SELECT クエリが
`LIMIT 5 OFFSET 0`
という句を伴うことを示してい
ます。
*
初期状態では
、
[
[yii\data\Pagination|Pagination
]
] は、1ページ目を表しています。
これ
を反映して、国の SELECT クエリは
`LIMIT 5 OFFSET 0`
という句を伴うことになり
ます。
その結果、最初の5つの国が取得されて表示されます。
*
[
[yii\widgets\LinkPager|LinkPager
]
] ウィジェットは、
[
[yii\data\Pagination::createUrl()|Pagination
]
] によって作成された URL を使ってページボタンをレンダリングします。
URL は、別々のページ番号を表現する
`page`
というクエリパラメータを含んだものになります。
...
...
@@ -259,4 +252,4 @@ http://hostname/index.php?r=country/index&page=2
次の節では、
[
Gii
](
tool-gii.md
)
と呼ばれる強力なコード生成ツールを使う方法を学びます。
このツールは、データベーステーブルのデータを取り扱うための「作成・読出し・更新・削除 (CRUD)」操作のような、通常必要とされることが多いいくつかの機能の迅速な実装を手助けしてくれるものです。
実際のところ、あなたがたった今書いたばかりのコードは、Gii ツールを使
って Yii によって自動的に生成することが出来ま
す。
実際のところ、あなたがたった今書いたばかりのコードは、Gii ツールを使
えば、全部、Yii が自動的に生成してくれるもので
す。
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment