ThinkPHP的Model操作

Posted 高锴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP的Model操作相关的知识,希望对你有一定的参考价值。

几种调用模型的方法:

use think\Controller;

//use app\index\model\App;
use think\Loader;

class Index extends Controller
{
public function index()
{
//$res = App::get(2); 【第一种】
//$app = new App; 【第二种】
$app = Loader::model(‘App‘); 【第三种】
$res = $app->get(4);
$res = $res->toArray();
dump($res);
}
}

 

使用模型查询数据的方法
【获取一条记录】 get方法和find方法
public function index()
{
$res = App::get(function($query){
$query->where(‘id‘,‘eq‘,3)->field(‘name, status‘);
});

// $res = App::where(‘name‘,‘eq‘,‘ipad‘)->field(‘name, key‘)->find();
$res = $res->toArray();
dump($res);

}

【获取多条数据】【all】

public function index()
{

// $res =App::all(‘1,2,3‘); 【字符串形式】
//$res = App::all([2,3,4]); //【数组形式】
$res = App::all(function($query){
$query->where(‘id‘,‘<‘,5)->field(‘name,key,status‘);
});
foreach($res as $val){
$res = $val->toArray();
dump($res);
}

}

where方法直接获取

public function index()
{
// $res = App::where(‘id‘,‘<‘,5)->select();
// foreach($res as $val){
// $res = $val->toArray();
// dump($res);
// }
$res = App::where(‘id‘,1)->value(‘name‘);
dump($res);

}
【获取单个字段一条】
public function index()
{
$res = App::where(‘id‘,1)->value(‘name‘);
dump($res);

}

【获取单个字段多条】
public function index()
{
$res = App::column(‘name‘,‘key‘);
dump($res);

}

 

 

使用模型添加数据

【create方法】
public function index()
{
// $res = App::create([
// ‘name‘=>‘三星‘,
// ‘is_encryption‘=>1,
// ‘key‘=>‘sx‘,
// ‘status‘=>1
// ]);
//当添加数据库没有的字段时,会报错,且不会添加,加第二个参数,true
// $res = App::create([
// ‘name‘=>‘苹果mac‘,
// ‘is_encryption‘=>1,
// ‘key‘=>‘mac‘,
// ‘status‘=>1,
// ‘momo‘=>‘123‘
// ],true);

//仅允许添加name和status两个字段
$res = App::create([
‘name‘=>‘macbook‘,
‘is_encryption‘=>1,
‘key‘=>‘book‘,
‘status‘=>1,
‘momo‘=>‘123‘
],[‘name‘,‘status‘]);
dump($res);
}

【save方法】

public function index()
{
// $appModel = new App;
// $res = $appModel->save([
// ‘name‘=>‘手机‘,
// ‘is_encryption‘=>1,
// ‘key‘=>‘sj‘,
// ‘status‘=>1,
// ‘demo‘=>111
// ]);
//过滤非数据库字段
// $appModel = new App;
// $res = $appModel->allowField(true)->save([
// ‘name‘=>‘手机‘,
// ‘is_encryption‘=>1,
// ‘key‘=>‘sj‘,
// ‘status‘=>1,
// ‘demo‘=>1111
// ]);

$appModel = new App;
$res = $appModel->allowField([‘name‘,‘is_encryption‘])->save([
‘name‘=>‘手机‘,
‘is_encryption‘=>1,
‘key‘=>‘sj‘,
‘status‘=>1,
‘demo‘=>1111
]);
dump($res);
}

【添加多条数据】
public function index()
{
$appModel = new App;
$res = $appModel->saveAll([
[‘name‘=>‘book‘],
[‘name‘=>‘cat‘]
]);
dump($res);
}

 

使用模型更新数据

【update方法更新】
public function index()
{
// $res = App::update([
// ‘id‘=>8,
// ‘is_encryption‘=>1
// ]);

//没有条件的话,update()加第二个参数
// $res = App::update([
// ‘is_encryption‘=>1,
// ],[‘id‘=>12]);

//还支持闭包函数
$res = App::update([
‘is_encryption‘=>1
],function($quest){
$quest->where("id",‘=‘,13);
});
dump($res);
}


【where条件更新】【推荐】
public function index()
{
// $res = App::where(‘id‘,5)->update([
// ‘key‘=>‘hw‘
// ]);
// dump($res);
}

【save方法更新】【推荐】
public function index()
{

// $appModel = new App;
// $res = $appModel->save([
// ‘key‘ => ‘mb‘,
// ],[‘id‘=>8]);

$appModel = new App;
$res = $appModel->save([
‘key‘ => ‘sj11‘,
],function($quest){
$quest->where(‘id‘,11);
});
dump($res);
}

 

【saveAll更新】
public function index()
{
$appModel = new App;


$res = $appModel->saveAll([
[‘id‘=>12,‘key‘=>‘bk‘],
[‘id‘=>13,‘key‘=>‘cat‘]
]);
dump($res);
}

 

 

使用模型删除数据

[destroy方法]
public function index()
{
// $res = App::destroy([‘id‘=>11]);
// dump($res);

// $res = App::destroy(function($quest){
// $quest->where(‘id‘,13);
// });

dump($res);
}


[delete方法]
public function index()
{
// $appModel = App::get(12);
// $res = $appModel->delete();

$res = App::where(‘id‘,‘>‘,7)->delete();
dump($res);
}



























































































































































































以上是关于ThinkPHP的Model操作的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp对数据库操作都有哪些内置函数

thinkphp5中的model模型层,有啥用

初窥ThinkPHP

THinkPHP 中的 new Model() 错误问题, 一实例化Model 就出错。

thinkphp 模型类的作用?

thinkphp中data方法