从laravel的数据透视表中获取所有数据

时间:2018-08-14 01:54:54

标签: php laravel model

我试图将所有lead_id放入我的数据透视表中,但我无法使其正常工作。

控制器:

     $levels = Level::all();
     $levels->lead()->attach('lead_id');
     return $levels;

模型级别:

public function lead(){
    return $this->belongsToMany(Lead::class, 'level_students')->withPivot('level_id', 'lead_id');
  }

模型负责人:

 public function level(){
return $this->belongsToMany(Level::class, 'level_students')->withPivot( 'lead_id', 'level_id');

}

1 个答案:

答案 0 :(得分:2)

如果您是指lead_id中的所有Level,则可以使用pluck()

$level->lead->pluck('lead_id');

我不太确定您要实现什么目标,因为您似乎想检索与任何lead_id相关的所有Level。但是,在这种情况下,您可以为数据透视表创建模型(例如LevelLead)并使用distinct()或与查询生成器一起使用:

$leadIds = DB::table('level_students')->select('lead_id')->distinct()->get();

如果要获取被引用表的列(例如leads表的name列),则可以使用JOIN。检查Laravel's doc了解更多选项。例如,假设Lead的表名是leads,则:

$leads = DB::table('level_students')->join('leads', 'level_students.lead_id', '=', 'leads.lead_id')->select('level_students.lead_id', 'leads.name')->distinct()->get();