Thinkphp5 关联模型
必须建立两个模型分类模型(attr)、文章模型(article)
attr模型
<?php
namespace app\common\model;
use think\Model; class Attr extends Model{ }
article模型
<?php
namespace app\common\model;
use think\Model; class Article extends Model{ }
hasOne(一对一关联)
关联查询
<?php
namespace app\common\model;
use think\Model; class Attr extends Model{
// 关联文章模型
public function article()
{
//return $this->hasOne('article','pid','id','','INNER');
return $this->hasOne('article','pid');
} public function s(){
$id = 19;
$attr = $this->get($id);
// 查询单条
//$res = $attr->article()->find();
// 查询多条
$r = $attr->article; // 打印出来数据(article+attr内容)
$rr = $attr->article->parent->data; // 打印attr内容
$rrr = $attr->article->data; // 打印出来article内容; $r = $this->toCollection($rrr);
return $r; } }
查询出来的是article内容(只有一条数据)。比如:一个用户,只有一份身份信息
关联保存
hasMany(一对多关联)
<?php
namespace app\common\model;
use think\Model; class Attr extends Model{
// 关联文章模型
public function article()
{
return $this->hasMany('article','pid','id');
//return $this->hasOne('article','pid');
}
// 可用
public function s(){
$id = 9;
$attr = $this->get($id);
// 查询单条
//$res = $attr->article()->find();
// 查询多条
$res = $attr->article()->select();
return $res; } }
控制器调用
<?php
namespace app\index\controller;
use think\Controller;
use think\Model;
class Index extends Controller
{
protected $model;
public function _initialize()
{
parent::_initialize(); // TODO: Change the autogenerated stub
$this->model = model('attr');
} public function index(){
$d = $this->model->s();
print_r($d);
} }
输出结果:只有article 内容(没有attr内容)。hasMany关联相当于Model('article')。一个用户可以看多本数
Thinkphp5 关联模型的更多相关文章
- thinkphp5 model 模型
新增更新都是save.saveAll 怎么识别他们 实例化模型后调用save方法表示新增: 查询数据后调用save方法表示更新: save方法传入更新条件后表示更新: isUpdate(true): ...
- ThinkPHP5中模型关联关系一对一,一对多
TP5 返回json反斜杠前面转义了class XinDai extends Controller{ public function index(){ $res = [ ['logo'=>'/i ...
- Thinkphp5.0 模型hasOne、hasMany、belongsTo详解
ThinkPHP5有关联模型的操作,但有部分初学者对数据表中常见的几种表与表的关系还存在着问题,所以使用不好关联查询. 这里将hasOne.hasMany.belongsTo进行一个详细举例说明. 首 ...
- ThinkPHP 3.2.3 关联模型的使用
关于关联模型 ThinkPHP 3.2.3 的关联模型(手册地址)一般处理关联数据表的 CURD 操作,例如关联读取.关联写入.关联删除等. 实例 博客管理模块关于博客有 4 张数据表:博客表 crm ...
- thinkphp 关联模型配置代码
<?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tabl ...
- ThinkPHP 学习笔记 ( 四 ) 数据库操作之关联模型 ( RelationMondel ) 和高级模型 ( AdvModel )
一.关联模型 ( RelationMondel ) 1.数据查询 ① HAS_ONE 查询 创建两张数据表评论表和文章表: tpk_comment , tpk_article .评论和文章的对应关系为 ...
- ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
数据表 id cat_name cat_pid 76 手机.数码 0 84 手机配件 76 86 蓝牙耳机 84 从属关 ...
- ThinkPHP第十五天(setField、setInc、setDec、关联模型)
1.ThinkPHP中的比较特殊连贯操作 如果要更新某个字段可以用setField方法,比如M('user')->where('id=1')->setField('username','T ...
- ThinkPHP第十四天(显示TRACE界面配置,关联模型详解定义)
1.显示TRACE界面,首选需要在显示模版界面,$this->display(),然后需要在配置文件中配置 SHOW_PAGE_TRACE => true 2.关联模型使用 主表以user ...
随机推荐
- PCB封装步骤教程
疑问解答:为什么要封装? 就是元器件往PCB板上焊接时在板上的焊盘尺寸. 这里我以AT89C51单片机为例: 1.首先新建一个PCB元件库. 再找一个路径保存起来命名为DIP40,方便以后寻找 选择菜 ...
- crm的知识点整理
''' # 1. 通过ChangeList封装好多数据 # 2. 销售中公共资源:Q查询,3天 15天 from django.db.models import F,Q F 使用查询条件的值,专门取对 ...
- JNI编程实现(Linux)
JNI是Java Native Interface的缩写,是Java平台的本地调用,从Java1.1就成为了Java标准的一部分,它允许Java代码和其它语言的代码进行互相调用,只要调用约定支持即可, ...
- linux -- 查看磁盘空间的大小
Ubuntu 查看磁盘空间大小命令 df -h Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息, 命令格式: df -hl 显示格式为: 文件系统 容量 已 ...
- Java断言绝对不是鸡肋
在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当的输入或错误的环境而产生逻辑异常,断言在很多语言中都存在,C.C++.Python 都有不同的断言表示形式.在Jav ...
- Kafka与常见消息队列的对比
Kafka与常见消息队列的对比 RabbitMQ Erlang编写 支持很多的协议:AMQP,XMPP, SMTP, STOMP 非常重量级,更适合于企业级的开发 发送给客户端时先在中心队列排队.对路 ...
- 当echarts的legend字数过多的时候变成省略号
legend: { data: ['国有土地使用','食品药品安全','生态环境和资源保护','国有财产保护'], orient: 'horizontal', left: '10', bottom:' ...
- DHCP服务原理与搭建(Linux系统+路由器,二选一方案)
大家都知道上网的最基本前提是要在终端上设置IP.子网掩码.网关.DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP.掩码.DNS地址也能上网,这是什么原因呢?其实 ...
- Android中asset文件夹和raw文件夹区别与用法
*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R ...
- 通过action传过来的值在option获取进行验证
通过action传过来的值在option获取进行验证的方法: for(var i=0;i<document.getElementById("ufacilityType").o ...