关于 两层关系的数据采集

从A belongsToMany 找到B , B的关联 hasMany C

求A的关联C的所有值
A:

class Shop extends Model
{ 
public function members()
    {
        return $this->belongsToMany('App\Member');
    }
}

B:

class Member extends Model
{
public function shops()
    {
        return $this->belongsToMany('App\Shop');
    }
}
 
 public function member_reminds()
  {
        return $this->hasMany('App\Member_remind');
   }

C:

class Member_remind extends Model
{
    public function member()
    {
        return $this->belongsTo('App\Member');
    }
    }

试过两个方法,

1--首先取出 ID为1的A:SHOP 关联B: MEMBERS 的ID 列表 (lists('id'))
2--然后用C的whereIn来取出数据
问题是这样产生的SQL语句特别长,特别是关联B的条数上升ID列表越来越长


直接用DB::table方法,用JOIN

   
   DB::table('member_reminds')
->join('members','members.id','=','member_reminds.member_id' )
->join('member_shop','members.id','=','member_shop.member_id')
->join('shops','shops.id','=','member_shop.shop_id' )
->where('shops.id','=' ,$shop->id)
->get()

问题是获得的数据是一维的,不能象别的Model产生的可以关联
比如 $member_remind->member->name

请问有什么比较好的方案

JellyBool
修改的评论也不能少于六个字哦!
linyu0423
修改的评论也不能少于六个字哦!