从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
请问有什么比较好的方案