ThinkPHP3.23之关联模型(一)

本文详细解析了ThinkPHP3.23中的一对一关联模型,包括HAS_ONE和BELONGS_TO两种类型,通过实例展示了如何在文章模型中应用这两种关联关系,使代码更精简。

ThinkPHP3.23的关联模型是很好用的技巧,使用它能使你的代码更加精简,它包括三种关联关系:一对一(HAS_ONE,BELONGS_TO),一对多(HAS_MANY),多对多(HAS_TO_MANY)。
这里讲解第一种“一对一”的关联模型,其分为两种。
1,HAS_ONE
HAS_ONE关联表示当前模型拥有一个子对象,例如,每个员工都有一个对应的人事档案,每篇小说文章都有一个对应的书名。我们可以建立一个文章模型BookArticleModel,并且添加如下关联定义:

<?php 
namespace Admin\Model;

use Think\Model\RelationModel;
/**
* 文章模型
*/
class BookArticleModel extends RelationModel
{
	public $_link = array(
		'book_id' => array(
			'mapping_type' => self::BELONGS_TO,// 关联类型
			'class_name' => 'Book',// 关联数据表
			'foreign_key' => 'book_id', //关联外键名
			'mapping_fields' => 'book_id,title', // 需要查询的关联字段名称
		)
	);

然后在写文章控制器ArticleController

<?php
namespace Admin\Controller;

/**
* 文章管理
*/
class ArticleController extends CommonController
{
	// 文章列表
	public function index(){
		$res = D('BookArticle');
		$data = $res->relation('book_id')->Select();// 只关联一个表用具体字段relation('book_id')
 		dump($data); exit();
 	}
}

视图显示效果为

array(7) {
  [0] => array(7) {
    ["article_id"] => string(1) "1"
    ["book_id"] => array(2) {
      ["book_id"] => string(1) "1"
      ["title"] => string(12) "超品巫师"
    }
    ["title"] => string(26) "第一章  我不是道士"
    ["addtime"] => string(10) "1546260252"
    ["edittime"] => string(10) "1549984633"
    ["status"] => string(1) "0"
    ["count"] => string(4) "7174"
  }
  ....

2,BELONGS_TO
Belongs_to 关联表示当前模型从属于另外一个父对象,例如每个用户都属于一个部门,每篇小说文章都属于一本小说。用法和效果同上,我们只需更改如下模型中的关联定义。

'book_id' => self::BELONGS_TO
你是否遇到这些问题?客户资料记录在Excel或本子上,太乱,查阅不便以前的跟进情况都不记得了,对客户状态了解不够团队中每个成员各自记录,不能同步,没法协同工作员工离职,资料没有保留,导致客户流失严重其它的系统太复杂难用,让人头晕,且非常昂贵有了X-CRM! 完整记录所有客户资料及联系情况,永不丢失快速查询,客户状态及跟进情况目了然团队协作,信息同步,工作效率大大提高待办任务提醒,生日祝福自动处理,省时省力简单实用,功能强大,无须培训,看就会用   安装说明 1.把1.sql 导入到MYSQL数据库中,把App/Common/Conf/db.php中的数据库名称,账号密码改成自己的。 2.把程序放在二级目录下,如:http://127.0.0.1/xcrm/ 账号 admin 密码123456 3.请使用IE8以上,或是谷歌浏览器。 4.PHP版本要大于5.3   大家在安装的时候遇到问题 1.页面顶部出现空白行 解决办法:db.php 要以uft8无BOM格式编码 保存 notepad 编辑器里 格式 下 2.乱码问题 解决办法:数据库建表的时候选 uft8-general-ci 编码格式 然后点开 SQL 把1,SQL复制进去,执行就可以了 3、如果程序执行时报错? 解决办法:保存PHP>5.3版本 删除App下面 Runtime 文件夹   演示地址的账号及密码: 账号liuxing99 密码123456   PS: 还没找到称心如意的那个管理软件? X-Mis是款开放式的管理平台,能容纳管理各种数据、实现信息互通共享;能快速搭建适合自己的 OA、CRM、HR 等管理软件。小到个人的记账记事,大到企事业单位的客户信息、项目信息、销售订单、售后报修、出库入库、固定资产、人事薪资、办公信息、收费付费...等各种信息,全都能管理!       相关阅读 同类推荐:站长常用源码
ThinkPHP个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用 开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单入口模式等,融合了Struts的 Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和些常用操作,在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单 和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应 用开发更简单、更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践! ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值