forked from fuel/docs
-
Notifications
You must be signed in to change notification settings - Fork 118
/
Copy pathmodels.html
163 lines (122 loc) · 7.81 KB
/
models.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./../assets/css/combined.css">
<link rel="shortcut icon" href="./../favicon.ico" />
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
var path = './../';
</script>
<script src="./../assets/js/combined.js"></script>
<title>モデル - 概要 - FuelPHP ドキュメント</title>
</head>
<body>
<div id="container">
<header id="header">
<div class="table">
<h1>
<strong>FuelPHP, a PHP 5.3 Framework</strong>
Documentation
</h1>
<form id="google_search">
<p>
<span id="search_clear"> </span>
<input type="submit" name="search_submit" id="search_submit" value="検索" />
<input type="text" value="" id="search_input" name="search_input" />
</p>
</form>
</div>
<nav>
<div class="clear"></div>
</nav>
<a href="#" id="toc_handle">目次</a>
<div class="clear"></div>
</header>
<div id="cse">
<div id="cse_point"></div>
<div id="cse_content"></div>
</div>
<div id="main">
<h2>モデル</h2>
<h3>モデルとは?</h3>
<p>
データを取得し、操作し、あるいはそれを消去したい場合、その処理は常にモデルによって行われるべきです。モデルは、ある種のデータ表現であり、
データを変化させるメソッドを持ちます。たとえば。コントローラには SQL クエリを一切記述せず、モデル側にそれを記述し、コントローラではモデルが実行したクエリを呼び出す、
というような処理が出来ます。この方法によって、データベースを変更した時もコントローラを書き換える必要はなく、データベースに影響を及ぼすモデルのみを書き換えるだけですむのです。
</p>
<h3 id="using_models">どのようにモデルを使うか?</h3>
<p>
Fuel において、モデルの本質は単なる <a href="classes.html" title="Class Documentation">クラス</a> です。他のものと同様なのです。つまりライブラリ以外のなにものでもありません。
ただし Model_ 接頭辞が付いているので、他のクラスと見分けを付けることが容易になります。モデルを有効に使うためには、他のクラスを必要とするでしょう。
</p>
<h3 id="creating_models">モデルを作る</h3>
<pre class="php"><code>
namespace Model;
class Welcome extends \Model {
public static function get_results()
{
// Database interactions
}
}</code></pre>
<p class="note">現在の名前空間の外部にあるグローバルからクラスを使う時には、
バックスラッシュを接頭辞としてつけることを忘れないでください。もしこの点について理解していない場合は、
<a href="http://www.php.net/namespaces">PHP.net</a> の名前空間に関する部分を読んでください。</p>
<h3 id="accessing_models">モデルへのアクセス</h3>
<p>PHP は、現在の名前空間にクラスをインポートするための <code>use</code> キーワードをもっています。
このキーワードによって、特定のクラスのファイルの中で、モデルクラス名 <code>Model\Welcome</code> を <code>Welcome</code>
という単純な名前に短縮出来ます。</p>
<pre class="php"><code>
use \Model\Welcome;
class Controller_Welcome extends Controller
{
public function action_index()
{
$results = Welcome::get_results();
}
} </code></pre>
<h3 id="writing_own_models">モデルを書く</h3>
<p>モデルは、どのようなかたちのデータストレージに対しても使うことができますが、ここでは SQL での利用に焦点を当てましょう。というのも、
それが最もよく使われているものだからです。ほとんど常だと思いますが、作られるモデルには少なくとも <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank">CRUD</a>
メソッド: create, read, update, delete (あるいはそれらのバリエーション) の 4 つが全て含まれているはずです。Fuel においては、
モデルは、デフォルトでは何も継承する必要がありません。
もちろん、自分なりのベースモデルを作ることや Fuel の <a href="#orm_models">Orm パッケージ</a> を使うことも出来ます。</p>
<h3 id="writing_queries">SQL クエリを書く</h3>
<p><a href="../classes/database/db.html">DB クラス</a> を使ってネイティブな SQL クエリを次のように作成することが出来ます:</p>
<pre class="php"><code>DB::query('SELECT * FROM users WHERE id = 5');</code></pre>
<h3 id="use_query_builder">クエリビルダを使う</h3>
<p>データをエスケープする、データを配列で使う、あるいは複数のデータベースエンジンを跨ぐことが出来るようなアプリケーションを作る、このような時、
ネイティブな SQL が重荷になることがあります。DB クラスのクエリビルダのメソッドを用いれば、ネイティブ SQL を抽象化して書くことが出来ます。
</p>
<pre class="php"><code>DB::select('title','content')->from('articles')->execute()->get('title');</code></pre>
<p>ネイティブ SQL クエリとクエリビルダの利用については <a href="../classes/database/db.html">DB クラス</a> のドキュメントをご覧ください。</p>
<h3 id="model_crud_models">モデル作成のために Model_Crud を使う</h3>
<p>モデルを作るための有効な方法の一つは <a href="../classes/model_crud/introduction.html">Model_Crud</a> を使うことです。これはデータベースのテーブルとのやりとりに必要な一般的な機能を提供し、以下のように使用します。</p>
<pre class="php"><code>// 全ての記事を探しだす
$entry = Model_Article::find_all();
// 日付逆順でカテゴリ 1 に属する全ての記事を探し出す
$entry = Model_Article::find(array(
'where' => array('category_id', 1),
'order_by' => array('date' => 'desc')
));</code></pre>
<h3 id="orm_models">モデル作成のために Orm パッケージを使う</h3>
<p>リレーションのサポートなどモデルのためのもっと多くの機能が必要なら、 Orm パッケージを使うこともできます。これはあなたのモデルにとんでもなく多くの機能を追加します。以下のように使用します。</p>
<pre class="php"><code>// 全ての記事を探し出す
$entry = Model_Article::find('all');
// 日付逆順でカテゴリ 1 に属する全ての記事を探し出す
$entry = Model_Article::find('all', array(
'where' => array('category_id', 1),
'order_by' => array('date', 'desc')
));</code></pre>
<p>Model_Crud と ORM パッケージは似た構文を持っています。これは Model_Crud が提供するより多くの機能が必要になった時に、簡単に Orm に移行できるようにするためです。</p>
</div>
<footer>
<p>
© FuelPHP Development Team 2010-2013 - <a href="http://fuelphp.com">FuelPHP</a> is released under the MIT license.
[ <a href="https://github.com/fuel/docs/commits/1.6/develop/general/models.html">原文コミット履歴</a> | <a href="https://github.com/NEKOGET/FuelPHP_docs_jp/commits/1.6/develop_japanese/general/models.html">翻訳コミット履歴</a> | <a href="https://github.com/NEKOGET/FuelPHP_docs_jp/blob/1.6/develop_japanese/general/models.html">GitHubで修正</a> ]
</p>
</footer>
</div>
</body>
</html>