Skip to content
This repository was archived by the owner on Mar 17, 2020. It is now read-only.

Document Model

Yusei Yamanaka edited this page Jan 5, 2014 · 2 revisions

Model::create();

Modelを新規に作成し、作成したTypeを返します。

$user = UserModel::create(); // 返り値はUserType型

Model::find($columns, $options)

指定された条件にあうデータを取得し、取得したTypeの配列、または、Typeを返します。 $columnsで取得するカラムを指定します。省略するとすべてのカラムを取得します。 $optionsでオプションを指定することができます。オプションでは、取得する条件(WHERE)やテーブルの結合(JOIN)、取得件数(LIMIT)などの設定ができます。

$users = UserModel::find('*',
			array(
				'condition' => array('name' => 'jack')
			)); // 返り値はUserType型の配列

上記の例をSQLで書くと以下のようになります。

SELECT * FROM users WHERE name = 'jack';

オプションの取得する条件(WHERE)にはプレースホルダを用いた指定方法も可能です。以下はnameが"jack"以外のレコードを取得します。

array( 'condition' => array('name <> ?', 'jack') )

Model::find_by_*($value)

指定されたカラムが$valueとマッチするレコードを1件取得し、Typeを返します。

UserModel::find_by_name('jack'); // 返り値はUserType型

ここで注意して欲しいことは、この関数はレコードを1件のみしか取得せず、Typeを返す点です。上記の例をfind()関数を用いて表すと以下のようになります。

$user = UserModel::find('*',
			array(
				'condition' => array('name' => 'jack')
				'only' => true
			)); // 返り値はUserType型

find()関数の$optionsに'only' => true というオプションを加える事により1件のみを取得し、配列ではなくTypeを返させることができます。

Model::find_or_create_by_*($value)

find_by_()関数とだいたい同じですが、find_by_()関数はレコードが存在しなかった際にnullを返しますが、この関数ではTypeを新規作成してTypeを返します。

// 以下の2つのコードは同じ動作です。

$user = UserModel::find_by_name('jack');
if(is_null($user)) {
	$user = UserModel::create();
}

$user = UserModel::find_or_create_by_name('jack');

実際にプログラムを書いていくと、簡単なクエリであればfind_by_*()関数などで対応でき、複雑なクエリやテーブルの結合を用いるクエリはfind()関数を用いることが多いです。

Clone this wiki locally