定义模型
- 继承于 think\Model
- 一个模型对应一张数据表,名称对应
- 对应多张表时,添加模型关联方法
- thinkPHP5 命令生成模型
php think make:model api/Banner
- 示例
use think\Model;
class Banner extends Model
{
protected $hidden = ['delete_time', 'update_time']; // 隐藏字段
// protected $visible = ['id']; // 只显示指定字段
// 建立关联
public function items()
{
// 一对一关系关联:belongsTo() 或 hasOne() ; 一对多关系关联: hasMany()
// 外键在主表中,使用belongsTo() , 目标在被关联表中,使用hasOne()
// 一对多关系 hasMany 方法 参数为('要关联的模型', '关联的id', 'id' )
return $this->hasMany('BannerItem', 'banner_id', 'id');
}
// protected $table = 'category'; // 查询其它表
public static function getBannerByID($id)
{
// 关联多个模型时, with()中填写数组 with(['items','items1']) 也可以嵌套使用
$banner = self::with(['items', 'items.img'])->find($id);
return $banner;
}
}
- 使用模型
// 调用 链式方法使用 with + 定义好的关联模型
$banner = BannerModel::with('items')->find($id);
// 定义多个关联时, with写为数组 with(['items', 'items1'])
// 嵌套关联时,with写为数组 with(['items', 'items.img'])
- 在控制器中使用
use app\api\model as BannerModel; // 通过别名,简化命名空间
// 调用模型中的静态方法
$banner = BannerModel::getBannerByID($id);