103]);
//增
//添加一条数据
//$sql = "insert into ". config('database.prefix') . "articles ";
//$sql.="(title,desn,body) values(:title,:desc,:body)";
//$res = mdb::execute($sql,['title'=>'我是新增title','desc'=>'我是描述','body'=>'我是body']);
//改
//$sql = "update ". config('database.prefix') . "articles ";
//$sql.= "set title=:title where id=:id";
//$res = mdb::execute($sql,['title'=>'我是改后标题','id'=>218]);
//删
//$sql = "delete from ".config('database.prefix') . "articles ";
//$sql.="where id=:id";
//$res = mdb::execute($sql, ['id'=>218]);
//dump($res);
}
}
添加数据(能使用助手函数的都推荐使用助手函数)
'我是新增title','desn'=>'我是描述','body'=>'我是body'];
//多条数据
// $data2 = [
// ['title' => '我是新增title1', 'desn' => '我是描述', 'body' => '我是body'],
// ['title' => '我是新增title2', 'desn' => '我是描述', 'body' => '我是body']
// ];
//$res = db('articles')->data($data)->insert();
//添加一条数据,并返回新增的主键id
//$res = db('articles')->insertGetId($data);
//插入多条数据
//$res = db('articles')->insertAll($data2);
dump($res);
}
}
更新数据
where('id','=','224')->update([
'title'=>'新改的标题'
]);
访问量每次访问 click字段 +1
$res =db('articles')->where('id','=','224')->update([
'click'=>Db::raw('click+1')
]);
dump($res);
}
}
删除数据
# 根据主键删除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);
# 条件删除
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();
# 无条件删除所有数据 小心去用
Db::name('user')->delete(true);
# 软删除数据 使用delete_time字段标记删除 逻辑删除
# 软删除,必须要表中要delete_time字段
Db::name('user')
->where('id', 1)
->useSoftDelete('delete_time',time())
->delete();
查询数据
//根据主键ID查询数据 返回一维数组
$res = db('articles')->find(224);
$res = db('articles')->where('id',224)->find();
//where还可以多条件,没有查询分组
SQL:SELECT * FROM `tp_articles` WHERE `id` > 100 AND `click` > 100
$res = db('articles')->where('id','>',100)->where('click','>',100)->select();
//等价如上写法
$where = [
'id' => ['>', 100],
'click' => ['>', 100]
];
$obj = new Where($where);
$res = db('articles')->where($obj)->select();
//where还支持匿名函数 ,有查询分组
SQL:SELECT * FROM `tp_articles` WHERE ( `id` > 100 AND `click` > 100 )
$res = db('articles')->where(function (Query $query){
$query->where('id','>',100)->where('click','>',100);
})->select();
//和上面是一样
//SQL: SELECT * FROM `tp_articles` WHERE ( `id` > 100 AND `click` > 100 ) OR ( `title` LIKE 'a%' )
$res = db('articles')->where(function (Query $query){
$query->where('id','>',100)->where('click','>',100);
})->whereOr(function (Query $query){
$query->where('title','like','a%');
})->select();
// 此用法一般用于 接口,要是没有查询到数据就抛出异常
$res = db('articles')->where('id',985)->findOrFail();
$res = db('articles')->where('id','>',500)->selectOrFail();
// 排序和分页
//$res = db('articles')->order('id','desc')->limit(0,2)->select();
// 获取指定的字段的值
//$ret = db('articles')->where('id',210)->value('title');
// 获取指定的列
#$ret = db('articles')->column('title');
//这个的意思是返回数组的键是id ,值是title
#$ret = db('articles')->column('title','id');
//意思是在所有查询数据的title前面都加上 '世界你好----'
// 获取器 当前值 数据源
$ret = db('articles')->withAttr('title',function ($value,$data){
return '世界你好---'.$value;
})->where('id','>',200)->select();
模型操作
php think make:model 模块名/模型名(首字母大写)
php think make:model 模型名(首字母大写) 一般是这么用
# 非必须,意思是你的模型类名和表名不一致或者主键不是为id,假如文章模型,主键是aid之类的需要设置
protected $pk = 'uid'; # 设置主键名称
protected $table = 'think_user'; #设置当前模型对应的完整数据表名称
# 模型的实例化
//引入命名空间
use app\common\model\Articles;
//new一个模型
$model = new Articles();
//助手函数实例化
$model = model('articles');
模型添加数据
#添加数据
$user = new User;
$user->save([
'name' => 'thinkphp',
'email' => '[email protected]'
]);
# 过滤post数组中的非数据表字段数据,模型对象中才有的方法
$user->allowField(true)->save($_POST);
$user->allowField([要插入的字段,要插入的字段])->save($_POST);
#通过静态方法添加数据
$user = User::create([
'name' => 'thinkphp',
'email' => '[email protected]'
]);
# 添加多条记录
$user = new User;
$list = [
['name'=>'thinkphp','email'=>'[email protected]'],
['name'=>'onethink','email'=>'[email protected]']
];
$user->saveAll($list);
模型更新数据
# 模型更新数据方法一
$user = new User;
// save方法第二个参数为更新条件
$user->save([
'name' => 'thinkphp',
'email' => '[email protected]'
],['id' => 1]);
$user = new User;
// 过滤post数组中的非数据表字段数据
$user->allowField(true)->save($_POST,['id' => 1]);
# 静态方法更新数据(推荐使用)
User::where('id', 1)->update(['name' => 'thinkphp']);
模型删除数据
# 方法1
$user = User::get(1);
$user->delete();
# 方法2
User::destroy(1);
User::destroy([1,2,3]);
模型操作软删除
find());
//返回二维数组,软删除的数据
dump(Articles::onlyTrashed()->select());
//恢复被软删除的数据
$art = Articles::onlyTrashed()->find(223);
$art->restore();
模型查询数据
# 查询单条记录
$user = User::where('name', 'thinkphp')->find();
# 查询多条记录
$list = User::where('status', 1)->limit(3)->order('id', 'asc')->select();
# 获取某个字段或者某个列的值
// 获取某个用户的积分
User::where('id',10)->value('score');
// 获取某个列的所有值
User::where('status',1)->column('name');
# 动态查询
// 根据name字段查询用户
$user = User::getByName('thinkphp');
trait(重点,php5.4.0之后出现):解决php想要多继承问题,其实php是可以多继承的
bb(); //bb
echo $vip->Ab(); //BBBBB
//同时模型也支持,db类中的获取器方式
$ret = $articles->withAttr('title',function ($value,$data){
return '世界你好---'.$value;
})->where('id','>',200)->select();