Lavel 5.6.8 Eloquent:多对多+多对一的拔除方法

时间:2018-03-15 07:15:24

标签: php laravel laravel-5

数据库结构

用户

  • ID
  • 用户名
  • 密码

cityareas

  • ID
  • 名称
  • AREA_ID

cityarea_user

  • ID
  • cityarea_id
  • USER_ID

领域

  • ID
  • 名称

我还有添加关系的模型。

用户

public function cityareas()
{
    return $this->belongsToMany('App\Cityarea');
}

Cityarea

public function area()

    {
        return $this->belongsTo('App\Area');
    }

public function users()
{
    return $this->belongsToMany('\App\User');
}

区域

public function cityareas()
{
    return $this->hasMany('App\Cityarea');
}

问题: 我如何在用户所属的区域获取列表(我尝试使用pluck)?

我试着这样做:

$users = User::with('cityareas.area')->where('id', $id)->get();

结果是那样的

enter image description here

然后我尝试只在那里采取area.id或area.name或两者但不工作...... 什么是最好的方法?

1 个答案:

答案 0 :(得分:0)

  $users = User::with(['cityareas' => function($query){
          $query->with(['area' => function( $q){
    });

    })->where('id', $id)->get();

尝试这样并在其中使用Closure。

希望这有帮助