问题
- 在社区看到好多人问关联 三级关联的问题
- 小弟在这里给大家分享下拙见
抛转引玉
模型设计
- 假设我的情况是这样的
- 我有多个店铺
- 每个店铺里有多个仓库
- 仓库中有多类商品
每类商品又指定了一个员工来管理
数据表大概设计
零、管理员 user
字段 类型 注释 id int10 id主键 name char10 名字 一、店铺 shop
字段 类型 注释 id int10 id主键 name char10 名字 user_id int10 管理员ID 二、仓库 store
字段 类型 注释 id int10 id主键 name char10 名字 shop_id int10 所属店铺的id 三、商品 product
字段 类型 注释 id int10 id主键 name char10 名字 store_id int10 所属仓库的id 对应数据表的model大概样子
零、管理员 user
public function shop(){//我有多个店铺return $this->hasMany('shop', 'shop_id', 'id', [], 'LEFT'); }
一、店铺 shop
public function store(){//店铺有许多的仓库return $this->hasMany('store', 'store_id', 'id', [], 'LEFT'); } public function user(){//店铺有一个管理员return $this->hasOne('user', 'id', 'user_id', [], 'LEFT')->setEagerlyType(0); }
二、仓库 store
public function shop(){//仓库属于店铺return $this->belongsTo('shop', 'shop_id', 'id', [], 'LEFT')->setEagerlyType(0); } public function product(){//仓库有许多类商品return $this->hasMany('product', 'store_id', 'id', [], 'LEFT'); }
三、商品 product
public function store(){//商品属于仓库return $this->belongsTo('store', 'store_id', 'id', [], 'LEFT')->setEagerlyType(0); }
在控制器中查询
已知管理员id=666查 管理员->店铺->仓库->商品
$user_id=666;//已知管理员的id$user=model("user")->get($user_id);$user->shop;//结果是多个商店foreach($user['shop'] as $v){ $v->store;//结果是多个仓库 foreach($v['stroe'] as $val){$val->product;//结果是多个商品 }}dump($user);
已知商品的id=888 查 商品->仓库->店铺->管理员
$product_id=888;//已知商品的id是888$product=model("product")->get($product_id);$product->store->shop->user;//结果是一个管理员;$username=$product['store']['shop']['user']['name'];//去某一个字段的值$username=$product->store->shop->user->name;//或者直接这样dump($product);
PS
- 思路是这样的
- 为了保证写的没有重大问题 正在抓紧测试中 稍后编辑
- 如果有更好的方式方法请回帖
- 若有误,欢迎各位大神回帖指正
- 如果对你有帮助 请收藏!请点赞!
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。