我试图将所有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');
}
答案 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();