TP5模型关联问题
在使用模型关联时:假如有表 merchant商户表 m_store 店铺表 m_store_ref 商户店铺关联表 user 普通用户表
$mer = Merchant::with([
'MStoreRef',
'MUserInfo',
'MStoreRef.MStore',
])
->where('userid','=',$userid)
->find();
返回的结果是如下数据
{
"status": 0,
"error_code": 0,
"msg": "获取成功",
"info": {
"id": 1,
"userid": 1,
"citycode": "",
"parent_id": 0,
"ctime": "2017-08-10 16:23:36",
"money": "0.00",
"name": "郑州秒秒信息科技",
"type": 0,
"license": "",
"m_store_ref": {
"userid": 1,
"s_id": 1,
"m_store": {
"id": 1,
"name": "秒秒总店",
"userid": 1,
"type": 1
}
},
"m_user_info": {
"id": 1,
"username": "",
"realname": "",
"user_tel": "15136204782",
}
}
}
现在要隐藏一些不需要返回的数据
因为这里需要返回的数据只有指定的几个 所以这里使用 visible 来限制显示的字段
$mer->visible([
'name',
'm_store_ref',
'm_user_info',
'm_store_ref.m_store',
'm_store_ref.m_store.name',
'm_user_info.username',
'm_user_info.user_tel',
]); 发现返回的结果 有些问题 在m_store 中的数据并没有按照想象的只获取name字段
{
"status": 0,
"error_code": 0,
"msg": "获取成功",
"info": {
"name": "郑州秒秒信息科技",
"m_store_ref": {
"m_store": {
"id": 1, "name": "秒秒总店",
"userid": 1,
"type": 1
}
},
"m_user_info": {
"username": "",
"user_tel": "15136204782"
}
}
}
尝试了很多写法后 发现这里 只可以限定到二级 如果有第三级参数 需要另行限制
$mer->m_store_ref->m_store->visible(['name']);
这样返回的结果就是最终想要返回的数据
{
"status": 0,
"error_code": 0,
"msg": "获取成功",
"info": {
"name": "郑州秒秒信息科技",
"m_store_ref": {
"m_store": {
"name": "秒秒总店"
}
},
"m_user_info": {
"username": "",
"user_tel": "15136204782"
}
}
}
另外因为这里使用的hasone关联 所以直接使用hidden或者visible
如果关联的数据是多个也就是多对多关联 或者一对多关联时 查询获得的数组 想要使用hidden或者visible时 需要使用foreach 循环 来获取单个对象值
再使用hidden或者visible
TP5模型关联问题的更多相关文章
- tp5 模型关联,多表联查实用方法
1.模型中建立关联关系 public function goods(){ return $this->belongsTo('app\common\model\goods\Goods', 'goo ...
- TP5.1框架中的模型关联
一对一关联 hasOne('关联模型','外键','主键'); 关联模型(必须):关联的模型名或者类名 外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id 主键:当前 ...
- TP5 模型类和Db类的使用区别
原文:http://www.upwqy.com/details/3.html 总结 在控制器中 模型操作 get() 和 all() 只能单独使用来查询数据 想要链式操作查询数据 需要使用f ...
- TP5模型belongsTo和hasOne的区别
在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同.以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有 ...
- 关于THINKPHP5模型关联的初步理解
初步理解的意思是,使用最常用的关联模型,然后可以正常运行 还是打个比方 文章表 和文章分类表 一个文章分类可以有多个文章 所以 文章分类模型和文章建立 hasMany的关联 而文章和文章分类表则 ...
- TP5模型belongsTo和hasOne这两个方法的区别
在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同.以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有 ...
- 「七天自制PHP框架」第四天:模型关联
往期回顾:「七天自制PHP框架」第三天:PHP实现的设计模式,点击此处 原文地址:http://www.cnblogs.com/sweng/p/6624845.html,欢迎关注:编程老头 前阵子在网 ...
- TP3.1 一对多模型关联
TP3.1.3 的一对多的模型关联 老需求 --- 一个用户多个文章,查看这些文章 HasMany 首先定义Model 模型名字叫UserMode.class.php class UserMode ...
- laravel 模型关联之(多对多)
多对多 多对多就相当于一个专题Topic有多个文章,但是这多个文章又属于多个专题, 而且多对都必须有一个表是他们之间的关联关系表PostTopic Post表和Topic表之间没有直接的关联,而且通过 ...
随机推荐
- openwrt pptpd客户端
步骤 opkg update opkg install ppp-mod-pptp opkg install luci-proto-ppp 在OpenWRT安裝PPTP Client端 首先用ssh登陆 ...
- 【基础】26个命令玩转linux,菜鸟及面试必备
1 查看目录与文件:ls #显示当前目录下所有文件的详细信息 ls -la 2 切换目录:cd #切换当前目录为/opt/test cd /opt/test 3 显示当前目录:pwd pwd 4 创建 ...
- bzoj 3576[Hnoi2014]江南乐 sg函数+分块预处理
3576: [Hnoi2014]江南乐 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 1929 Solved: 686[Submit][Status ...
- Angular4.0用命令行创建组件服务出错
之前使用cnpm创建的angular4.0项目,由于cnpm下载的node_modules资源经常会有部分缺失,所以在用命令行创建模板.服务的时候会报错: Error: ELOOP: too many ...
- Maven中的pom.xml详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Yii2 灵活加载js、css
Yii2.0对于CSS/js 管理,使用AssetBundle资源包类. 视图如何按需加载CSS/JS ? 资源包定义: backend/assets/AppAsset.PHP <?php na ...
- React——diff算法
react的diff算法基于两个假设: 1.不同类型的元素会产生不同的树 2.通过设置key,开发者能够提示那些子组件是稳定的 diff算法 当比较两个树时,react首先会比较两个根节点,接下来具体 ...
- APICloud常用模块
常用模块 基础 fs db 支付 wxPay aliPay unionPay 消息 ajpush rongCloud2
- Python基础学习参考(六):列表和元组
一.列表 列表是一个容器,里面可以放置一组数据,并且列表中的每个元素都具有位置索引.列表中的每个元素是可以改变的,对列表操作都会影响原来的列表.列表的定义通过"[ ]"来定义,元素 ...
- 【DDD】领域驱动设计实践 —— 一些问题及想法
在社区系统的DDD实践过程中,将遇到一些问题和产生的想法记录下来,共讨论. 本文为[DDD]系列文章中的其中一篇,其他内容可参考:使用领域驱动设计思想实现业务系统. 1.dto.model和entit ...