在使用模型关联时:假如有表   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模型关联问题的更多相关文章

  1. tp5 模型关联,多表联查实用方法

    1.模型中建立关联关系 public function goods(){ return $this->belongsTo('app\common\model\goods\Goods', 'goo ...

  2. TP5.1框架中的模型关联

    一对一关联 hasOne('关联模型','外键','主键'); 关联模型(必须):关联的模型名或者类名 外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id 主键:当前 ...

  3. TP5 模型类和Db类的使用区别

    原文:http://www.upwqy.com/details/3.html 总结 在控制器中  模型操作  get() 和 all()  只能单独使用来查询数据   想要链式操作查询数据 需要使用f ...

  4. TP5模型belongsTo和hasOne的区别

    在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同.以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有 ...

  5. 关于THINKPHP5模型关联的初步理解

    初步理解的意思是,使用最常用的关联模型,然后可以正常运行 还是打个比方 文章表  和文章分类表 一个文章分类可以有多个文章  所以  文章分类模型和文章建立 hasMany的关联 而文章和文章分类表则 ...

  6. TP5模型belongsTo和hasOne这两个方法的区别

    在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同.以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有 ...

  7. 「七天自制PHP框架」第四天:模型关联

    往期回顾:「七天自制PHP框架」第三天:PHP实现的设计模式,点击此处 原文地址:http://www.cnblogs.com/sweng/p/6624845.html,欢迎关注:编程老头 前阵子在网 ...

  8. TP3.1 一对多模型关联

    TP3.1.3 的一对多的模型关联 老需求 --- 一个用户多个文章,查看这些文章   HasMany 首先定义Model 模型名字叫UserMode.class.php class UserMode ...

  9. laravel 模型关联之(多对多)

    多对多 多对多就相当于一个专题Topic有多个文章,但是这多个文章又属于多个专题, 而且多对都必须有一个表是他们之间的关联关系表PostTopic Post表和Topic表之间没有直接的关联,而且通过 ...

随机推荐

  1. angular-file-upload封装为指令+图片尺寸限制

    不了解angular-file-upload基础使用 请先参考http://blog.csdn.net/lai_xu/article/details/49535847 博客地址 下文如果有更好的建议请 ...

  2. VSCode插件MSSQL教程(昨天提了一下)

    推荐一个跨平台SQL IDE:https://docs.microsoft.com/zh-cn/sql/sql-operations-studio/download 什么数据库都木有(系统自带的不算) ...

  3. 1.3 fractions模块

    数学世界中,浮点数还可以用分数形式展示,不可约简的分数形式往往更简洁直观.  问题来了,Python中如何输出不可约简的分数形式呢?  答案:用Fraction类来实现.这个类属于标准库的fracti ...

  4. UVA-11214 IDA*

    利用迭代加深搜索,枚举需要的皇后数量,进行搜索. 对于10 * 10 的棋盘,最多需要5个皇后就能攻击整个棋盘,当0~4个皇后都不能搜索成功,那么5就不用搜索,直接打印. AC代码: #include ...

  5. MongoDB,子查询

    //1.从sub(订单明细)对订单号分组,查询最多子订单的单号一条数据,重命名orderNo字段为num//2.根据这个sub.num(从结果集里获取第一条结果),查询main(主档表) db.mai ...

  6. easywechat--在thinkPHP5中的使用

    1. 安装 1.1 v-4.0 版本要求 PHP版本在7.0以上 1.2 在项目目录下运行以下命令 若未安装composer,则先安装composer -> http://docs.phpcom ...

  7. Scrum方法论

    产品负责人: 代表客户或未来游戏玩家.产品负责人需要确保所有有趣的功能都能在游戏中实现,还负责对游戏完整观感的理解. Scrum主管: 代表理性思维.需要主持每日Scrum会议,并确保每个人都在执行任 ...

  8. python语言中的AOP利器:装饰器

    一.前言 面向切面编程(AOP)是一种编程思想,与OOP并不矛盾,只是它们的关注点相同.面向对象的目的在于抽象和管理,而面向切面的目的在于解耦和复用. 举两个大家都接触过的AOP的例子: 1)java ...

  9. Shell脚本编程学习入门 02

    Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #! ...

  10. directdraw显示rgb565

    // TODO: 在此添加控件通知处理程序代码  height=width=widthBytes=0;  m_screen.SetWindowPos(&CWnd::wndBottom,0,0, ...