1、意义
模型的创建是为了简化控制器中对数据库操作的代码,如某个具体的业务要操作多张表,可把对表的操作封装到模型的一个方法中,在用到的地方均可调用。
2、命名规范
tp5中模型的命名规范,表名除去前缀后驼峰法转换,如tp_bill_info的模型名为BillInfo。
3、引入
模型在控制器中的引入方式有三种,
方式一:在控制器的开始部分use进来(推荐使用)
namespace app\index\controller;
use think\Controller;
use app\index\model\User;#引入User模型
class Index extends Controller{
public function index(){
//模型的使用,直接使用
$res = User::get(4);
//new后使用
$userDB = new User;
$res = $userDB::get(4);
$res = $res->toArray();
dump($res);
}
}
方式二:使用Loader类加载模型
namespace app\index\controller;
use think\Controller;
use think\Loader;#引入loader类
class Index extends Controller{
public function index(){
$userDB = Loader::model('User');#使用loader类加载模型
$res = $userDB::get(4);
$res = $res->toArray();
dump($res);
}
}
方式三:使用助手函数model(不推荐使用,以防助手函数被覆盖掉)
namespace app\index\controller;
use think\Controller;
class Index extends Controller{
public function index(){
//使用助手函数加载模型
$userDB = model('User');
$res = $userDB::get(3);
$res = $res->toArray();
dump($res);
}
}
4、使用模型查询数据
(1)get方法,传递主键查询
namespace app\index\controller;
use think\Controller;
use app\index\model\User;
class Index extends Controller{
public function index(){
//给get方法传递主键
$res = User::get(1);#返回对象
//打印出对象中的某个属性(字段)值
dump($res->username);
//把对象转换成数组
$res = $res->toArray();
dump($res);
}
}
(2)get方法,传递闭包函数(构造查询语句)
namespace app\index\controller;
use think\Controller;
use app\index\model\User;
class User extends Controller{
public function index(){
//get方法,传递闭包函数(构造查询语句的除链表操作)
$res = User::get(function($query){
$query->where('username','eq','dobby5')->field('id,email,age');
});
$res = $res->toArray();
dump($res);
}
}
注:get方法返回的都是一条记录。
(3)where结合find查询
namespace app\index\controller;
use think\Controller;
use app\index\model\User;
class I