<?php
namespace app\index\model;
// use app\index\model\EmployeesModel;
use think\Model;
class UserModel extends Model {
protected $table = "jobs";
// protected $pk = 'employee_id';
protected $pk = 'job_id';
public function employees() {
return $this->hasOne("EmployeesModel","job_id");
}
public function getall() {
return $this->select();
// return 1111;
}
public function getStatusAttr($value)
{
$status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
return $status[$value];
}
}
E:\phpstudy_pro\WWW\thinkPHP\tp5\application\index\model\UserModel.php
namespace app\index\model;
use think\Model;
class EmployeesModel extends Model {
protected $table = "employees";
protected $pk = 'employee_id';
public function getall() {
return $this->select();
// return 1111;
}
}
E:\phpstudy_pro\WWW\thinkPHP\tp5\application\index\model\EmployeesModel.php
public function index()
{
// $user = new UserModel();
// $list = $user->getall();
Db::listen(function ($sql, $time, $explain) {
// 记录SQL
echo $sql . ' [' . $time . 's]<br>';
// 查看性能分析结果
dump($explain);
});
// $list = UserModel::select(); // 未预载入 执行下面的$user->employees时会在关联数据库搜索 执行n+1次搜索
$list = UserModel::with('employees')->select(['AD_ASST','MK_REP']); // 预载入 如果使用关联预查询功能,对于一对一关联来说,只有一次查询,对于一对多关联的话,就可以变成2次查询,有效提高性能。
foreach($list as $user){
// 获取用户关联的profile模型数据
dump($user->employees->last_name);
// echo $user->getData('status'); // 获取原始数据
}
}
关联预载入 将查询次数压缩在两次 用的in关键字
employees一开始不知道是什么东西 后来原来是一个方法