core::select
(CoreMVC 1.0)
core::select — 从数据库中查询一条记录映射到实例
◎描述
bool core::select ( [ string $tablename = '' [, int $primary_index = 0 ] ] )
bool core::select ( string $tablename , string $primary_name )
该方法可以根据主键条件选择一条记录,然后将记录的数据映射到实例中去,所以该方法必须是通过实例调用的。需要注意的是如果实例中没有的字段会自动将其添加为成员,除了修改成员数据外并不会删除已有的成员和数据。
◎参数
tablename
要查询记录的完整表名,系统不粘附前缀。如果是使用默认参数空串则表名为继承类的类名加上前缀,但如果此时是直接从核心类调用则返回false。无论是默认的还是带表名参数的,系统都会根据设置的前缀替换规则进行替换。
primary_index
主键位置。0表示第1个字段是主键,1表示第2个字段是主键,以此类推。当不使用主键而直接通过系统查询一条记录时,该参数可以设置为-1。
primary_name
主键名称。和primary_index一样,如果主键名称不存在则视为不使用主键而直接通过系统查询一条记录。和primary_index一样,该参数可以是数据库中非真正的主键,而只是要查询的字段。
◎返回值
当从核心类实例调用并且表名为空串时返回false。其他情况下查找到记录返回true,未找到记录返回false。
◎例子
在继承类中的使用
《user.php》
<?php
class user extends core {
final public static function detail ($id) {
$user = new self;
$user->user_id = $id;
$user->select ();
self::view (__CLASS__ . '/' . __FUNCTION__ '.tpl', compact ('user'));
}
}
?>
指定表名和主键字段
《test.php》
<?php
$user = new core;
$user->select ('pre_user', -1); //从pre_user表中取一条记录。
$user->name = '张三';
$user->select ('pre_user', 'name'); //从pre_user表中取一条名字为“张三”的记录,所以并不要求定义的主键一定是表结构中的主键。
?>