thinkphp 模型的curd

1.新增

  1.1  典型做法   

$user = new User;
$data = Request::only(['name','email']);
$user->save($data);
//返回true和false

$user = new User;
// post数组中只有name和email字段会写入  
//使用allowField来指定允许的字段 true为表中的字段
$user->allowField(['name','email'])->save($_POST);

 1.2 使用静态方法

// 只允许写入name和email字段的数据
$user = User::create([
    'name'  =>  'thinkphp',
    'email' =>  'thinkphp@qq.com'
], ['name', 'email']);
echo $user->name;
echo $user->email;
echo $user->id; // 获取自增ID

 

 2 修改

 2.1查询后修改

使用的数据的update方法返回的是受影响的行数  update为数据库的方法  不触发 钩子方法等事件

User::where('id', 1)
    ->update(['name' => 'thinkphp']);

  使用事件为模型的方法

//查询后修改 这种方法也比较推荐 也会使用到事件
$user
= User::get(1); $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save();

 2.2直接修改(都会触发事件)

    2.2.1 模型方法

$user = new User();
// post数组中只有name和email字段会写入
$data = Request::only(['name','email']);
$user->save($data, ['id' => 1]);

     2.2.2 使用静态方法

User::update(['id' => 1, 'name' => 'thinkphp']);

         

删除

    delete方法查询后删除会触发钩子函数

$user = User::get(1);
$user->delete();
destroy方法直接传入主键不触发钩子函数等事件
User::destroy(1);

 

 查询

    获取单个

// 取出主键为1的数据
$user = User::get(1);
echo $user->name;

// 使用查询构造器查询满足条件的数据
$user = User::where('name', 'thinkphp')->find();
echo $user->name;

V5.1.23+版本开始,可以使用findOrEmpty方法,当查询数据不存在的话,返回空模型而不是Null。

 

 

 

 

 使用get和find都是返回模型对象可以当数组使用

 查询多个

// 使用查询构造器查询
$list = User::where('status', 1)->limit(3)->order('id', 'asc')->select();
foreach($list as $key=>$user){
    echo $user->name;
}
查询构造器方式的查询可以支持更多的连贯操作,包括排序、数量限制等。

V5.1.21+版本开始,可以在all方法之前使用Db类的查询链式操作,

// 使用查询构造器查询
$list = User::where('status', 1)->limit(3)->order('id', 'asc')->all();
foreach($list as $key=>$user){
    echo $user->name;
}

 

 

posted on 2019-12-06 14:03  墨非12138  阅读(333)  评论(0编辑  收藏  举报

导航