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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
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
Show 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 @@
...
@@ -2,15 +2,14 @@
==================
==================
この節では、
`country`
という名前のデータベーステーブルから読み出した国データを表示する新しいページの作り方を説明します。
この節では、
`country`
という名前のデータベーステーブルから読み出した国データを表示する新しいページの作り方を説明します。
この目的を達するために、データベース接続を構成し、
[
アクティブレコード
](
db-active-record.md
)
クラスを作成し、
この目的を達するために、データベース接続を構成し、
[
アクティブレコード
](
db-active-record.md
)
クラスを作成し、
[
アクション
](
structure-controllers.md
)
を定義し、そして
[
ビュー
](
structure-views.md
)
を作成します。
[
アクション
](
structure-controllers.md
)
を定義し、そして
[
ビュー
](
structure-views.md
)
を作成します。
このチュートリアルを通じて、次のことを
する方法を学びます:
このチュートリアルを通じて、次のことを
学びます。
*
DB 接続を構成する
*
DB 接続を構成する
方法
*
アクティブレコードのクラスを定義する
*
アクティブレコードのクラスを定義する
方法
*
アクティブレコードのクラスを使ってデータを検索する
*
アクティブレコードのクラスを使ってデータを検索する
方法
*
改ページを伴う
方法でビューにデータを表示する
*
改ページを伴う
仕方でビューにデータを表示する方法
この節を完了するためには、データベースを使うことについて基本的な知識と経験が無ければならないことに注意してください。
この節を完了するためには、データベースを使うことについて基本的な知識と経験が無ければならないことに注意してください。
具体的に言えば、DB クライアントツールを用いてデータベースを作成する方法と、SQL 文を実行する方法を知っていなければなりません。
具体的に言えば、DB クライアントツールを用いてデータベースを作成する方法と、SQL 文を実行する方法を知っていなければなりません。
...
@@ -21,12 +20,11 @@
...
@@ -21,12 +20,11 @@
まず初めに、
`yii2basic`
という名前のデータベースを作成してください。このデータベースからアプリケーションにデータを読み出すことになります。
まず初めに、
`yii2basic`
という名前のデータベースを作成してください。このデータベースからアプリケーションにデータを読み出すことになります。
作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選んでください。
Yii は多数のデータベース製品に対するサポートを内蔵していますので、作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選ぶことが出来ます。
Yii は多数のデータベース製品に対するサポートを組み込みで持っています。
以下の説明では、話を単純にするために、MySQL を前提とします。
以下の説明では、話を単純にするために、MySQL を前提とします。
次に、データベースに
`country`
という名前のテーブルを作り、いくつかのサンプルデータを挿入します。
次に、データベースに
`country`
という名前のテーブルを作り、いくつかのサンプルデータを挿入します。
そうするために
、次の SQL 文を実行することが出来ます:
そうするために
は、次の SQL 文を実行することが出来ます。
```
sql
```
sql
CREATE
TABLE
`country`
(
CREATE
TABLE
`country`
(
...
@@ -47,8 +45,7 @@ INSERT INTO `country` VALUES ('RU','Russia',146934000);
...
@@ -47,8 +45,7 @@ INSERT INTO `country` VALUES ('RU','Russia',146934000);
INSERT
INTO
`country`
VALUES
(
'US'
,
'United States'
,
278357000
);
INSERT
INTO
`country`
VALUES
(
'US'
,
'United States'
,
278357000
);
```
```
この時点で、あなたは
`yii2basic`
という名前のデータベースを持ち、その中に三つのカラムを持つ
`country`
というテーブルを持っています。
この時点で、あなたは
`yii2basic`
という名前のデータベースを持ち、その中に三つのカラムを持つ
`country`
というテーブルがあり、
`country`
テーブルは 10 行のデータを持っている、ということになります。
そして、
`country`
テーブルは、10 行のデータを持っています。
DB 接続を構成する<a name="configuring-db-connection"></a>
DB 接続を構成する<a name="configuring-db-connection"></a>
...
@@ -58,8 +55,7 @@ DB 接続を構成する<a name="configuring-db-connection"></a>
...
@@ -58,8 +55,7 @@ DB 接続を構成する<a name="configuring-db-connection"></a>
(例えば、MySQL のための
`pdo_mysql`
) の両方をインストール済みであることを確認してください。
(例えば、MySQL のための
`pdo_mysql`
) の両方をインストール済みであることを確認してください。
アプリケーションがリレーショナルデータベースを使う場合、これは基本的な必要条件です。
アプリケーションがリレーショナルデータベースを使う場合、これは基本的な必要条件です。
これらがインストール済みなら、
`config/db.php`
というファイルを開いて、あなたのデータベースに適合するように
これらがインストール済みなら、
`config/db.php`
というファイルを開いて、あなたのデータベースに適合するようにパラメータを変更してください。デフォルトでは、このファイルは下記の記述を含んでいます。
パラメータを変更してください。既定値では、このファイルは下記の記述を含んでいます:
```
php
```
php
<?php
<?php
...
@@ -73,15 +69,15 @@ return [
...
@@ -73,15 +69,15 @@ return [
];
];
```
```
この
`config/db.php`
というファイルは典型的なファイルベースの
[
コンフィギュレーション
](
concept-configurations.md
)
ツールです。
この
`config/db.php`
というファイルは典型的なファイルベースの
[
構成情報
](
concept-configurations.md
)
の
ツールです。
この
コンフィギュレーション
ファイルが
[
[yii\db\Connection
]
] インスタンスの作成と初期化に必要なパラメータを規定します。そして、
この
構成情報
ファイルが
[
[yii\db\Connection
]
] インスタンスの作成と初期化に必要なパラメータを規定します。そして、
[
[yii\db\Connection
]
] インスタンスを通じて、背後のデータベースに対
して
SQL クエリを実行することが出来るようになります。
[
[yii\db\Connection
]
] インスタンスを通じて、背後のデータベースに対
する
SQL クエリを実行することが出来るようになります。
上記のようにして構成された DB 接続は、アプリケーションコードの中で
`Yii::$app->db`
という式でアクセスすることが出来ます。
上記のようにして構成された DB 接続は、アプリケーションコードの中で
`Yii::$app->db`
という式でアクセスすることが出来ます。
> Info|情報: `config/db.php` は、メインのアプリケーション
コンフィギュレーション
ファイルである `config/web.php` にインクルードされます。
> Info|情報: `config/db.php` は、メインのアプリケーション
構成情報
ファイルである `config/web.php` にインクルードされます。
この
`config/web.php`
が
[
アプリケーション
](
structure-applications.md
)
インスタンスが初期化される仕方を規定します。
この
`config/web.php`
が
[
アプリケーション
](
structure-applications.md
)
インスタンスが初期化される仕方を規定します。
更なる情報については、
[
コンフィギュレーション
](
concept-configurations.md
)
の節を参照してください。
詳しい情報については、
[
構成情報
](
concept-configurations.md
)
の節を参照してください。
アクティブレコードを作成する<a name="creating-active-record"></a>
アクティブレコードを作成する<a name="creating-active-record"></a>
...
@@ -105,9 +101,9 @@ class Country extends ActiveRecord
...
@@ -105,9 +101,9 @@ class Country extends ActiveRecord
`Country`
クラスは
[
[yii\db\ActiveRecord
]
] を拡張しています。この中には一つもコードを書く必要はありません。
`Country`
クラスは
[
[yii\db\ActiveRecord
]
] を拡張しています。この中には一つもコードを書く必要はありません。
単に上記のコードだけで、Yii は関連付けられたテーブル名をクラス名から推測します。
単に上記のコードだけで、Yii は関連付けられたテーブル名をクラス名から推測します。
> Info|情報: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に
規
定することが出来ます。
> Info|情報: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に
指
定することが出来ます。
`Country`
クラスを使うことによって、以下のコード断片で示すように、
`country`
テーブルの中のデータを簡単に操作することが出来ます
:
`Country`
クラスを使うことによって、以下のコード断片で示すように、
`country`
テーブルの中のデータを簡単に操作することが出来ます
。
```
php
```
php
use
app\models\Country
;
use
app\models\Country
;
...
@@ -127,18 +123,16 @@ $country->save();
...
@@ -127,18 +123,16 @@ $country->save();
```
```
> Info|情報: アクティブレコードは、オブジェクト指向の流儀でデータベースのデータにアクセスし、操作する強力な方法です。
> Info|情報: アクティブレコードは、オブジェクト指向の流儀でデータベースのデータにアクセスし、操作する強力な方法です。
[
アクティブレコード
](
db-active-record.md
)
の節で、更に詳細な情報を得ることが出来ます。
[
アクティブレコード
](
db-active-record.md
)
の節で、詳細な情報を得ることが出来ます。
もう一つの方法として、
[
データアクセスオブジェクト(DAO)
](
db-dao.md
)
と呼ばれる、より低レベルなデータアクセス方法を使って
もう一つの方法として、
[
データアクセスオブジェクト
](
db-dao.md
)
と呼ばれる、より低レベルなデータアクセス方法を使ってデータベースを操作することも出来ます。
データベースを操作することも出来ます。
アクションを作成する<a name="creating-action"></a>
アクションを作成する<a name="creating-action"></a>
--------------------
--------------------
国データをエンドユーザに見えるようにするために、新しいアクションを作成する必要があります。
国データをエンドユーザに見えるようにするために、新しいアクションを作成する必要があります。
これまでの節でしたように
`site`
コントローラの中に新しいアクションを置くのではなく、国データに関係する全てのアクションに
これまでの節でしたように
`site`
コントローラの中に新しいアクションを置くのではなく、国データに関係する全てのアクションに限定した新しいコントローラを作成する方が理にかなうでしょう。
限定した新しいコントローラを作成する方が理にかなうでしょう。この新しいコントローラを
`CountryController`
と名付けます。
この新しいコントローラを
`CountryController`
と名付けます。そして、下記に示すように、
`index`
アクションをその中に作成します。
そして、下記に示すように、
`index`
アクションをその中に作成します。
```php
```php
...
@@ -179,9 +173,9 @@ class CountryController extends Controller
...
@@ -179,9 +173,9 @@ class CountryController extends Controller
`index`
アクションは
`Country::find()`
を呼び出します。
`index`
アクションは
`Country::find()`
を呼び出します。
このアクティブレコードのメソッドは DB クエリを構築して、
`country`
テーブルから全てのデータを読み出します。
このアクティブレコードのメソッドは DB クエリを構築して、
`country`
テーブルから全てのデータを読み出します。
一回のリクエストで返される国の数を制限するために、クエリは
[
[yii\data\Pagination
]
] オブジェクトの助けを借りてページ付けされます。
一回のリクエストで返される国の数を制限するために、クエリは
[
[yii\data\Pagination
]
] オブジェクトの助けを借りてページ付けされます。
`Pagination`
オブジェクトは二つの目的に奉仕します
:
`Pagination`
オブジェクトは二つの目的に奉仕します
。
*
クエリによって表現される SQL 文に
`offset`
句と
`limit`
句をセットして、一度に一ページ分のデータだけ (1ページ最大5行)を返すようにします。
*
クエリによって表現される SQL 文に
`offset`
句と
`limit`
句をセットして、一度に一ページ分のデータだけ (1ページ最大5行)
を返すようにします。
*
次の項で説明されるように、一連のページボタンからなるページャをビューに表示するために使われます。
*
次の項で説明されるように、一連のページボタンからなるページャをビューに表示するために使われます。
コードの最後で、
`index`
アクションは
`index`
と言う名前のビューをレンダリングしていますが、このとき、国データはもちろん、そのページ付け情報もビューに渡されます。
コードの最後で、
`index`
アクションは
`index`
と言う名前のビューをレンダリングしていますが、このとき、国データはもちろん、そのページ付け情報もビューに渡されます。
...
@@ -192,7 +186,7 @@ class CountryController extends Controller
...
@@ -192,7 +186,7 @@ class CountryController extends Controller
最初に、
`views`
ディレクトリの下に
`country`
という名前のサブディレクトリを作ってください。
最初に、
`views`
ディレクトリの下に
`country`
という名前のサブディレクトリを作ってください。
このフォルダが
`country`
コントローラによって表示される全てのビューを保持するのに使われます。
このフォルダが
`country`
コントローラによって表示される全てのビューを保持するのに使われます。
`views/country`
ディレクトリの中に、下記のコードを含む
`index.php`
という名前のファイルを作成します
:
`views/country`
ディレクトリの中に、下記のコードを含む
`index.php`
という名前のファイルを作成します
。
```
php
```
php
<?php
<?php
...
@@ -214,15 +208,14 @@ use yii\widgets\LinkPager;
...
@@ -214,15 +208,14 @@ use yii\widgets\LinkPager;
ビューは国データの表示に関連して二つの部分に分けられます。
ビューは国データの表示に関連して二つの部分に分けられます。
最初の部分では、提供された国データがたどられて、HTML の順序無しリストとしてレンダリングされます。
最初の部分では、提供された国データがたどられて、HTML の順序無しリストとしてレンダリングされます。
第二の部分では、アクションから渡されたページ付け情報を使って、
[
[yii\widgets\LinkPager
]
]
第二の部分では、アクションから渡されたページ付け情報を使って、
[
[yii\widgets\LinkPager
]
] ウィジェットがレンダリングされます。
ウィジェットがレンダリングされます。
`LinkPager`
ウィジェットはページボタンのリストを表示します。ボタンのどれかをクリックすると、対応するページの国データが更新表示されます。
`LinkPager`
ウィジェットはページボタンのリストを表示します。ボタンのどれかをクリックすると、対応するページの国データが更新表示されます。
試してみる<a name="trying-it-out"></a>
試してみる<a name="trying-it-out"></a>
----------
----------
上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします
:
上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします
。
```
```
http://hostname/index.php?r=country/index
http://hostname/index.php?r=country/index
...
@@ -232,8 +225,8 @@ http://hostname/index.php?r=country/index
...
@@ -232,8 +225,8 @@ http://hostname/index.php?r=country/index
最初、ページは5つの国を表示しています。
最初、ページは5つの国を表示しています。
そして、国リストの下には、4つのボタンを持ったページャがあります。
そして、国リストの下には、4つのボタンを持ったページャがあります。
"2" のボタンをクリックすると、ページはデータベース
から
次の5つの国、すなわち、2ページ目のレコードを表示します。
"2" のボタンをクリックすると、ページはデータベース
にある
次の5つの国、すなわち、2ページ目のレコードを表示します。
より注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう:
注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう。
```
```
http://hostname/index.php?r=country/index&page=2
http://hostname/index.php?r=country/index&page=2
...
@@ -241,8 +234,8 @@ 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
]
] が、データセットをページ付けするのに必要な全ての機能を提供しています。
*
最初
、
[
[yii\data\Pagination|Pagination
]
] は、1ページ目を表しています。
*
初期状態では
、
[
[yii\data\Pagination|Pagination
]
] は、1ページ目を表しています。
これ
は、国の SELECT クエリが
`LIMIT 5 OFFSET 0`
という句を伴うことを示してい
ます。
これ
を反映して、国の SELECT クエリは
`LIMIT 5 OFFSET 0`
という句を伴うことになり
ます。
その結果、最初の5つの国が取得されて表示されます。
その結果、最初の5つの国が取得されて表示されます。
*
[
[yii\widgets\LinkPager|LinkPager
]
] ウィジェットは、
[
[yii\data\Pagination::createUrl()|Pagination
]
] によって作成された URL を使ってページボタンをレンダリングします。
*
[
[yii\widgets\LinkPager|LinkPager
]
] ウィジェットは、
[
[yii\data\Pagination::createUrl()|Pagination
]
] によって作成された URL を使ってページボタンをレンダリングします。
URL は、別々のページ番号を表現する
`page`
というクエリパラメータを含んだものになります。
URL は、別々のページ番号を表現する
`page`
というクエリパラメータを含んだものになります。
...
@@ -259,4 +252,4 @@ http://hostname/index.php?r=country/index&page=2
...
@@ -259,4 +252,4 @@ http://hostname/index.php?r=country/index&page=2
次の節では、
[
Gii
](
tool-gii.md
)
と呼ばれる強力なコード生成ツールを使う方法を学びます。
次の節では、
[
Gii
](
tool-gii.md
)
と呼ばれる強力なコード生成ツールを使う方法を学びます。
このツールは、データベーステーブルのデータを取り扱うための「作成・読出し・更新・削除 (CRUD)」操作のような、通常必要とされることが多いいくつかの機能の迅速な実装を手助けしてくれるものです。
このツールは、データベーステーブルのデータを取り扱うための「作成・読出し・更新・削除 (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