• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
车车大人
博客园    首页    新随笔    联系   管理     

TP6关于hasOne的用法

 

 

实际操作中看如下案例

文章分类表:

CREATE TABLE `case_category` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `name` varchar(50) DEFAULT NULL COMMENT '分类名称',
  `num` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分类排序',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '分类状态(0=隐藏,1=显示)',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='展厅展馆案例分类表';

 

文章案例表:

CREATE TABLE `cases` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `cover` varchar(255) DEFAULT NULL COMMENT '封面图片',
  `title` varchar(255) DEFAULT NULL COMMENT '标题',
  `title_en` varchar(255) DEFAULT NULL COMMENT '标题英文翻译',
  `author` varchar(50) DEFAULT NULL COMMENT '作者',
  `address` varchar(255) DEFAULT NULL COMMENT '地址',
  `address_en` varchar(255) DEFAULT NULL COMMENT '地址英文翻译',
  `area` varchar(50) DEFAULT NULL COMMENT '面积',
  `area_en` varchar(50) DEFAULT NULL COMMENT '面积英文翻译',
  `content` text COMMENT '内容',
  `case_category_id` bigint(20) DEFAULT NULL COMMENT '案例分类关联id',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态(0=隐藏,1=显示)',
  `create_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT='展厅展馆案例表';

 

需求:查询文章列表以及分类详细信息

 创建两个模型层:CasesModel、CaseCategoryModel,然后在文章模型层写进行查询操作:

 主要查询的是案例,所以在案例的模型层写查询代码,又因为案例表只有关联id,所以hasone的关联要放在案例表模型中:

<?php

namespace app\common\model\mysql;

use think\Model;

class CasesModel extends Model
{
    protected $table = 'cases';

    /**
     * 根据案例分类进行分页查询列表
     */
    public function get_cases_lists_by_category($start, $limit, $type){
        return $this->with(['cases_category'])->select();
    }

    /**
     * 展厅展馆案例分类表关联
     */
    public function casesCategory(){
        return $this->hasOne(CaseCategoryModel::class,'id','case_category_id');
    }
}

 

这样查询的结果是:

 

 

 

 

如果要查询指定字段,那么可以可以改成如下:

/**
     * 展厅展馆案例分类表关联
     */
    public function casesCategory(){
        return $this->hasOne(CaseCategoryModel::class,'id','case_category_id')->bind(['name','cid'=>'id']);
    }

这样的话,查询结果是如下的结构:

 

 

 

 

 

关于hasone的解释:

return $this->hasOne(要关联的那个模型层名称::class,'要关联的那个模型层的主键id','当前模型代表的这张表的关联id')->bind(['字段1名称','别名'=>'字段2名称']);

 

通往牛逼的路上,在意的只有远方!
posted @ 2023-02-10 10:40  车车大人  阅读(331)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3