是否可以在 Laravel 中获取数据透视表与另一个表的关系?
Posted
技术标签:
【中文标题】是否可以在 Laravel 中获取数据透视表与另一个表的关系?【英文标题】:Is it possible to get the relation of a pivot table to another table in Laravel? 【发布时间】:2020-03-23 21:37:33 【问题描述】:我有一个当前具有此架构的培训应用:
trainings
id
name
speakers
id
first_name
last_name
training_speaker
id
training_id
speaker_id
training_speaker_dates
id
training_speaker_id
date
time
一个训练可以有多个演讲者,一个演讲者可以有多个训练。目前,我正在通过其枢轴模型访问培训演讲者。
class Training
public function speakers()
return $this->belongsToMany('App\Speaker')->using('App\TrainingSpeaker');
假设我们有一个为期 3 天的培训,演讲者可以参加第一天,也许只是上午,这就是为什么 training_speaker_dates
有日期和时间(下午的上午)。
是否可以在 Training 类下的扬声器方法中也包含 training_speaker_dates
?
或者,我应该删除training_speaker_dates
并将字段添加到training_speakers
表并允许具有唯一ID 的重复值(training_id 和speaker_id)吗?那么它看起来像这样
training_speaker
id
training_id
speaker_id
date
time
【问题讨论】:
不知道是否可以不使用第三方软件包或不通过您自己实现某种“有很多”。但是,您为什么没有使用date
和time
作为training_speaker
表上的枢轴属性?
@user3532758 我在存储在 training_speaker 时使用 attach 方法,所以我只能保存一个我猜的唯一的 training_id 和 speaker_id
啊!我知道了。因为有id
我想你可能已经计划在那里重复配对。我之前在类似的情况下使用过syncWithoutDetaching
。对不起,我帮不上忙,希望有更多经验的人能来。无论如何,祝你好运。
别担心@user3532758 伙计!感谢您分享您的想法。
【参考方案1】:
试试这个
class Training
public function trainingspeakerdates()
return $this->hasMany('App\Trainingspeakerdates','training_speaker_id','id')->using('App\TrainingSpeaker');
【讨论】:
抱歉,我需要先访问扬声器并附上每个扬声器的日期。以上是关于是否可以在 Laravel 中获取数据透视表与另一个表的关系?的主要内容,如果未能解决你的问题,请参考以下文章
可以将数据透视表与 laravel 5.5 中的另一个数据透视表相关联吗?