【问题标题】:Lavel 5.6.8 Eloquent: many to many + many to one pluck methodLaravel 5.6.8 Eloquent:多对多+多对一采摘方法
【发布时间】:2018-03-15 07:15:24
【问题描述】:

数据库结构

用户

  • 身份证
  • 用户名
  • 密码

市区

  • 身份证
  • 姓名
  • area_id

cityarea_user

  • 身份证
  • cityarea_id
  • user_id

地区

  • 身份证
  • 姓名

我也有添加关系的模型。

用户

public function cityareas()
{
    return $this->belongsToMany('App\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();

结果是这样的

然后我尝试仅在 area.id 或 area.name 或两者中采摘但不工作... 最好的方法是什么?

【问题讨论】:

  • 也添加你的采摘码
  • 你需要的输出是什么?
  • 你为什么不改用Areas::with([ 'cityareas.user' => function ($q) use ($id) { $q->where('id', $id); }])->get() 呢? (不确定您如何命名这些关系,但关键是您需要经过该区域)

标签: php laravel laravel-5


【解决方案1】:
  $users = User::with(['cityareas' => function($query){
          $query->with(['area' => function( $q){
    });

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

像这样尝试并在其中使用闭包。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2018-04-03
    • 2013-02-09
    • 2021-12-28
    相关资源
    最近更新 更多