thinkphp5 数据库操作模型方法集合

get或者find方法返回的是当前模型的对象实例,可以使用模型的方法。

save方法新增数据返回的是写入的记录数。

saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集(数组)。

saveAll方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中存在主键的时候会认为是更新操作,如果你需要带主键数据批量新增,可以使用下面的方式:

$user = new User;
$list = [
    ['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'],
    ['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com'],
];
$user->saveAll($list, false);

还可以直接静态调用create方法创建并写入:

$user = User::create([
    'name'  =>  'thinkphp',
    'email' =>  'thinkphp@qq.com'
]);
echo $user->name;
echo $user->email;
echo $user->id; // 获取自增ID
和save方法不同的是,create方法返回的是当前模型的对象实例。
allowField(true)过滤post数组中的非数据表字段数据。
destroy根据主键删除。 name获取单个数据。如果你是在模型内部,请不要使用$this->name的方式来获取数据,请使用$this->getAttr('name') 替代。

all根据主键获取多个数据:
// 根据主键获取多个数据
$list = User::all('1,2,3');
// 或者使用数组
$list = User::all([1,2,3]);
foreach($list as $key=>$user){
    echo $user->name;
}
// 使用数组查询
$list = User::all(['status'=>1]);
// 使用闭包查询
$list = User::all(function($query){
    $query->where('status', 1)->limit(3)->order('id', 'asc');
});
foreach($list as $key=>$user){
    echo $user->name;
}
获取某个字段或者某个列的值 // 
获取某个用户的积分 User::where('id',10)->value('score'); 
获取某个列的所有值 User::where('status',1)->column('name'); 
以id为索引 User::where('status',1)->column('name','id'); 
注意valuecolumn方法返回的不再是一个模型对象实例,而是单纯的值或者某个列的数组。