当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Model_Crud 方法 - 类別

优质
小牛编辑
121浏览
2023-12-01

使用範例的类别是假设它扩充 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 方法检查是否为新的纪录,或设定它是否为新。

静态
参数
参数类型预设描述
$newnull|布林
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 方法检查是否为冻结的纪录,或设定它是否为冻结。

静态
参数
参数类型预设描述
$frozennull|布林
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;
}