Model_Crud 方法
使用範例的类別是假設它擴充 Model_Crud 类別。
forge($data = array())
forge 方法回傳一个新的 Model_Crud 类別實例。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$data |
陣列 |
array()
|
給新實例的值。 |
|
回傳 |
一个擴充类別的新實例(Model_Crud 子代)。 |
範例 |
// 取得一个新實例
$user = Model_User::forge();
// 一个有值的新實例
$user = Model_User::forge(array(
'name' => 'John',
'surname' => 'Doe',
'email' => 'john@doe.org',
));
|
find_by_pk($value)
find_by_pk 方法藉由主鍵尋找一筆紀錄,內部使用 find_one_by 方法。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$value |
混合 |
必要 |
要尋找的主鍵值。 |
|
回傳 |
一个有已載入結果的 Model_Crud 實例,當沒找到時 null。 |
範例 |
// 取得一筆 `id` = 2 的資料
$user = Model_User::find_by_pk(2);
if ($user === null)
{
// 沒找到
}
else
{
// 找到
echo $user->email;
}
|
find_one_by($column, $value = null, $operator = '=')
find_one_by 方法藉由所給的行與值尋找一筆紀錄,內部使用 find 方法。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$column |
字串 |
必要 |
要使用的行。 |
$value |
混合 |
null
|
要檢查的值。 |
$operator |
字串 |
'='
|
要使用的運算子 |
|
回傳 |
一个有已載入結果的 Model_Crud 實例,當沒找到時 null。 |
範例 |
// 取得一筆 `email` = "info@example.com" 的資料
$user = Model_User::find_one_by('email', 'info@example.com');
if ($user === null)
{
// 沒找到
}
else
{
// 找到
echo $user->email;
}
|
find_by($column = null, $value = null, $operator = '=', $limit = null, $offset = 0)
find_by 方法尋找所有吻合所給的行與值的紀錄,你可選擇性的給運算子、限制及偏移,內部使用 find 方法。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$column |
字串 |
必要 |
要使用的行或一个 where 語句的陣列。 |
$value |
混合 |
null
|
要檢查的值。 |
$operator |
字串 |
'='
|
要使用的運算子。 |
$limit |
整数 |
null
|
限制。 |
$offset |
整数 |
0
|
偏移。 |
|
回傳 |
一个有已載入結果的 Model_Crud 實例陣列,當沒找到時 null。 |
範例 |
// SELECT * FROM `users` WHERE `email` LIKE "%@example.com" LIMIT 5 OFFSET 10
$users = Model_User::find_by('email', '%@example.com', 'like', 5, 10);
// Select * FROM `users` WHERE `name` = "John" AND `surname` LIKE "%Surname%" LIMIT 10
$users = \Model_User::find_by(array(
'name' => 'John',
array('surname', 'like', '%Surname%'),
), null, null, 10);
if ($users === null)
{
// 沒找到
}
else
{
foreach($users as $user)
{
// 對 $user 做处理
}
}
|
find_by_*($value = null)
这是一个魔術方法,你可以藉由修改 find_by_
方法名稱的一部份,指定行的名稱去尋找。
範例
// 这等同於 $user = Model_User::find_by('email', 'foo@example.com');
$user = Model_User::find_by_email('foo@example.com');
find_one_by_*($value = null)
这是一个回傳单筆紀錄的魔術方法,你可以藉由修改 find_one_by_
方法名稱的一部份,指定行的名稱去尋找。
範例
// 这等同於 $user = Model_User::find_one_by('email', 'foo@example.com');
$user = Model_User::find_one_by_email('foo@example.com');
find_all($limit = null, $offset = 0)
find_all 方法可選擇性的使用限制與偏移來尋找所有紀錄。內部使用 find 方法。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$limit |
整数 |
null
|
限制。 |
$offset |
整数 |
0
|
偏移。 |
|
回傳 |
一个有已載入結果的 Model_Crud 實例陣列,當沒找到時 null。 |
範例 |
// SELECT * FROM `users` LIMIT 10 OFFSET 20
$users = Model_User::find_all(10, 20);
|
find($config = array(), $key = null)
find 方法使用一个影響查詢的條件陣列尋找所有紀錄。
此方法也接受一个 閉包(closure)
做为第一个參数,當一个閉包(closure)被傳送時,它被呼叫并傳送一个 Database_Query
物件。你可以使用此方法在查詢执行前去修改它,閉包(closure)應該回傳修改的 Database_Query 物件。
此方法被所有其他 find 方法使用,當建立自訂的尋找程序時,你也應該使用它。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$config |
陣列|閉包(closure) |
array()
|
條件陣列或一个閉包(closure)以修改查詢。 |
$key |
字串 |
null
|
設定此为要使用的資料表列,做为結果陣列的鍵。 |
|
回傳 |
一个有已載入結果的 Model_Crud 實例陣列,當沒找到時 null。 |
範例 |
基本用法
$users = Model_User::find(array(
'select' => array('id', 'name', 'email'),
'where' => array(
array('name', 'like', '%Name%'),
'suspended' => 'no',
array('id', 'in', array(1, 2, 3, 4)),
),
'order_by' => array(
'name' => 'asc',
'surname' => 'desc',
),
'limit' => 10,
'offset' => 20,
));
使用鍵的基本用法
$users = Model_User::find(array(
'where' => array(
'active' => 'yes',
'banned' => 'no',
),
'order_by' => array('id' => 'desc'),
), 'id');
使用閉包(closure)的進階用法
$users = Model_User::find(function ($query)
{
return $query->join('roles')
->on('roles.id', '=', 'users.role_id')
->where('roles.name', 'admin');
});
|
pre_find(&$query)
取代 pre_find 方法以在执行前修改查詢。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$query |
\Query_Builder_Select 物件 |
必要 |
查詢物件。 |
|
回傳 |
空 |
範例 |
// 在你的模型
protected static function pre_find(&$query)
{
// 修改查詢
$query->where('active', 'yes');
}
|
post_find($result)
取代 post_find 方法以在回傳前修改結果。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$key |
\Query_Builder_Select 物件 |
必要 |
當找不到結果時 null,或一个結果的陣列。 |
|
回傳 |
必須回傳的結果(陣列或 null)。 |
範例 |
// 在你的模型
protected static function post_find($result)
{
if ($result !== null)
{
// 修改結果陣列
}
// 回傳結果
return $result;
}
|
set($values)
set 方法設定一組值的陣列到目前的模型實例。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$values |
陣列 |
必要 |
值的陣列。 |
|
回傳 |
目前的模型實例。 |
範例 |
$user = Model_User::forge()->set(array(
'name' => 'My Name',
'surname' => 'My Surname',
));
|
save($validate = true)
save 方法新增或更新一筆資料。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$validate |
布林 |
true
|
是否执行驗證。 |
|
回傳 |
當沒通過驗證時 false,新增時为新增結果,更新時为更新結果。 |
範例 |
$user = Model_User::forge()->set(array(
'name' => 'My Name',
'surname' => 'My Surname',
));
// 新增使用者
$result = $user->save();
$user = Model_User::find_by_pk(2);
$user->name = 'New Name';
// 更新使用者
$user->save();
// 更新但不执行驗證
$user->save(false);
|
delete()
delete 方法刪除一筆紀錄。
靜態 |
否 |
參数 |
無
|
回傳 |
Delete 查詢結果,受影響的筆数。 |
範例 |
$user = Model_User::find_by_pk(2);
if ($user)
{
// 刪除使用者
$user->delete();
}
|
is_new($new = null)
is_new 方法檢查是否为新的紀錄,或設定它是否为新。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$new |
null|布林 |
null
|
提供一个布林值以設定紀錄是否为新。 |
|
回傳 |
目前的實例。 |
範例 |
$user = Model_User::forge(array(
'id' => 3,
'name' => 'John',
'surname' => 'Otherdoe',
));
$user->is_new(false);
// 更新
$user->save();
|
count($column = null, $distinct = true, $where = array(), $group_by = null)
count 方法回傳一个資料列計数。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$column |
字串 |
null
|
要計数的行名稱。如果沒給,主鍵会被使用。 |
$distinct |
布林 |
true
|
是否执行一个相異值的查詢。 |
$where |
陣列 |
array()
|
要篩選結果的 where 子句的陣列。 |
$group_by |
字串 |
null
|
要群組的行。 |
|
回傳 |
混合。計数查詢的整数結果,或 false 在查詢失敗時。 |
範例 |
// 計数資料表中的所有紀錄
$nbr_of_records = Model_User::count();
// 只計数管理使用者的篩選結果数
$nbr_of_records = Model_User::count('id', true, array('group', '=', 100));
|
frozen($frozen = null)
frozen 方法檢查是否为凍結的紀錄,或設定它是否为凍結。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$frozen |
null|布林 |
null
|
提供一个布林值以設定紀錄是否为凍結。 |
|
回傳 |
目前的實例。 |
範例 |
$user = Model_User::find_by_pk(2);
$user->frozen(true);
// 傳遞凍結物件,沒有人可以改變它……
$user->frozen(false);
// 现在你可以再度使用它。
|
validation()
validation 方法(建立并)回傳模型 Validation 實例。
靜態 |
否 |
參数 |
無
|
回傳 |
一个 Validation 實例。 |
範例 |
$user = Model_User::find_by_pk(2);
$validation_object = $user->validation();
|
validates()
validates 方法回傳實例是否能通過驗證。
靜態 |
否 |
參数 |
無
|
回傳 |
一个成功的布林。 |
範例 |
$model = new Model_User;
$model->set(array(
'name' => 'John',
'surname' => 'Doe',
));
if ($model->validates())
{
// 模型是有效的,跳過驗證。
$model->save(false)
}
else
{
// 模型是無效的
}
|
to_array()
to_array 方法回傳模型的公開變数。
靜態 |
否 |
參数 |
無
|
回傳 |
陣列 |
範例 |
$user = Model_User::find_by_pk(2);
$user_array = $user->to_array();
|
pre_save(&$query)
取代 pre_save 方法以在新增前修改查詢。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$query |
\Database_Query_Builder_Insert 物件 |
必要 |
Insert 查詢物件。 |
|
回傳 |
空 |
範例 |
// 在你的模型
protected function pre_save(&$query)
{
// 變更查詢
$query->set(array('field' => 'value'));
}
|
post_save($result)
取代 post_save 方法以在新增結果修改/行动。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$result |
陣列 |
必要 |
新增結果陣列。 |
|
回傳 |
新增結果陣列。 |
範例 |
// 在你的模型
protected function post_save($result)
{
// 對結果做处理
return $result;
}
|
pre_update(&$query)
取代 pre_update 方法以在更新前修改查詢。
靜態 |
是 |
參数 |
參数 |
类型 |
預設 |
描述 |
$query |
\Database_Query_Builder_Update 物件 |
必要 |
Update 查詢物件。 |
|
回傳 |
空 |
範例 |
// 在你的模型
protected function pre_update(&$query)
{
// 變更 Update 查詢。
$query->set(array('field' => 'value'));
}
|
post_update($result)
取代 post_update 方法以修改 Update 查詢結果。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$result |
整数 |
必要 |
受影響的筆数。 |
|
回傳 |
Update 查詢物件。 |
範例 |
// 在你的模型
protected function post_update($result)
{
// 對結果做处理
return $result;
}
|
pre_delete(&$query)
取代 pre_delete 方法以在刪除前修改查詢。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$query |
\Database_Query_Builder_Delete 物件 |
必要 |
Delete 查詢物件。 |
|
回傳 |
空 |
範例 |
// 在你的模型
protected function pre_delete(&$query)
{
// 對刪除查詢做处理
}
|
post_delete($result)
取代 post_delete 方法以修改刪除結果。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$result |
整数 |
必要 |
受影響的筆数。 |
|
回傳 |
受影響的筆数。 |
範例 |
// 在你的模型
protected function post_delete($result)
{
// 對結果做处理
return $result;
}
|
pre_validate($data)
取代 pre_validate 方法以在驗證前修改新增/更新資料。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$data |
陣列 |
必要 |
模型的紀錄資料。 |
|
回傳 |
模型的紀錄資料。 |
範例 |
// 在你的模型
protected function pre_validate($data)
{
// 對資料做处理
return $data;
}
|
post_validate($data)
取代 post_validate 方法以在驗證後修改新增/更新資料。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$data |
陣列 |
必要 |
模型的紀錄資料。 |
|
回傳 |
模型的紀錄資料。 |
範例 |
// 在你的模型
protected function post_validate($data)
{
// 對資料做处理
return $data;
}
|
prep_values($data)
取代 prep_values 方法以在驗證或查詢执行前修改新增/更新資料。
靜態 |
否 |
參数 |
參数 |
类型 |
預設 |
描述 |
$data |
陣列 |
必要 |
模型的紀錄資料。 |
|
回傳 |
模型的紀錄資料。 |
範例 |
// 在你的模型
protected function prep_values($data)
{
// 對資料做处理
return $data;
}
|