Model
class User extends Model
{
protected $pk = 'id';
protected $table = 'test_user';
protected $autoWriteTimestamp = true;
public function getInfoById($id)
{
$res = User::where('id',$id)->find(); //模型 调用数据库的方法,返回对象数组
return $res;
}
public function createInfo($data)
{
$res = User::create($data); //模型的静态方法,可自动生成create_time,update_time,返回对象数组
return $res;
}
public function updateInfo($data)
{
$res = User::update($data); //模型的静态方法,可自动修改update_time,返回对象数组
return $res;
}
//如果是User::where()->update($data),则是调用数据库方法,不自动修改update_time,返回影响记录数
public function deleteInfoById($id)
{
$res = User::where('id',$id)->delete(); //调用数据库的方法,返回影响的记录数
return $res;
}
}
Controller
class Index extends Controller
{
public function testModel()
{
$model = new User();
$data = [
'name'=>'金毛狮王',
'password'=>'123',
'email'=>'jmsw@php.cn'
];
$data = $model->createInfo($data);
dump($data);
}
}
//数据库操作
1、数据库方法:User::where()->update()、User::insert() 等返回影响的记录条数 int(0),不能自动写入时间戳
2、模型动态方法:$model=new User(); $model->save() 等返回布尔值,可以自动写入时间戳
3、模型静态方法:$User::create()、$User::update() 等返回对象数组,可以自动写入时间戳
//对应操作方法
查 | 增 | 改 | 删 | |
数据库DB | find(数组/null)、select(二位数组/空数组) | insert(记录数)、insertAll(记录数) | update(记录数) | delete(记录数) |
模型动态 | find(对象数组/null)、select(二位对象数组/空数组) | save(bool)、saveAll(二维对象数组) | update(对象数组) | delete(bool) |
模型静态 | find(对象数组)、select(二位对象数组) | create(对象数组) | update(对象数组) | destroy(bool(true)) |
//$model->where('id',1)->find(),返回对象数组
//$model->find(1),返回对象数组
//Model::where('id',1)->find(),返回对象数组
//Model::find(1),返回对象数组
//模型直接调用方法,正常情况返回对象数组/bool/null,但中间有where()的情况,在update、delete中会改变返回结果
//$model->where()->update(),调用数据库的方法,返回记录数,不修改update_time
//Model::where()->update(),调用数据库的方法,返回记录数,不修改update_time
//$model->update(),模型的动态方法,返回对象数组,可自动修改update_time
//Model::update(),模型的静态方法,返回对象数组,可自动修改update_time
//$model->where()->delete(),调用数据库的方法,返回记录数,delete()中不可传参
//Model::where()->delete(),调用数据库的方法,返回记录数,delete()中不可传参
//$model->delete(),模型的动态方法,返回bool(false),不可用
//$model->find()->delete(),模型的动态方法,返回bool值,delete()中不可传参,find()中须传参
//Model::destory(),模型的静态方法,返回bool,destory()中须传参
//模型的增或改的方法,都可以自动修改时间戳
对象数组
dump($res)
array(13) { [0] => array(7) { ["id"] => int(1) ["name"] => string(6) "郭靖" ["email"] => string(14) "guojing@qq.com" } [1] => array(7) { ["id"] => int(2) ["name"] => string(6) "黄蓉" ["email"] => string(16) "huangrong@qq.com" } }
object //gettype($res)
dump($res[0]->name) //郭靖
//访问对象内部的属性必须用:->
//访问数组内部的值必须要用:[]
//访问对象数组内部的属性,用->、[]都可以,上面的输出也可用:dump($res[0]['name'])
//上面的$res是一个二维对象数组,echo gettype($res[0]) ,输出object
数据库方法和模型的静态方法
数据库方法:
Db::table('student') ->where('id',20) ->delete();
模型的静态方法:
Student::where('id',24)->delete();
//Db::table('student') === Student::