美文网首页
ThinkPHP 5.0 模型

ThinkPHP 5.0 模型

作者: _Wake | 来源:发表于2017-05-31 14:44 被阅读916次

定义模型

  1. 继承于 think\Model
  2. 一个模型对应一张数据表,名称对应
  3. 对应多张表时,添加模型关联方法
  4. thinkPHP5 命令生成模型
    php think make:model api/Banner
  5. 示例
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;
    }
}
  1. 使用模型
    // 调用  链式方法使用 with + 定义好的关联模型 
    $banner = BannerModel::with('items')->find($id);
    // 定义多个关联时, with写为数组 with(['items', 'items1'])
    // 嵌套关联时,with写为数组 with(['items', 'items.img'])
  1. 在控制器中使用
use app\api\model as BannerModel;        // 通过别名,简化命名空间
// 调用模型中的静态方法
$banner = BannerModel::getBannerByID($id);

相关文章

网友评论

      本文标题:ThinkPHP 5.0 模型

      本文链接:https://www.haomeiwen.com/subject/pcupxxtx.html