【问题标题】:Is it possible to get the relation of a pivot table to another table in Laravel?是否可以在 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

【问题讨论】:

  • 不知道是否可以不使用第三方软件包或不通过您自己实现某种“有很多”。但是,您为什么没有使用datetime 作为training_speaker 表上的枢轴属性?
  • @user3532758 我在存储在 training_speaker 时使用 attach 方法,所以我只能保存一个我猜的唯一的 training_id 和 speaker_id
  • 啊!我知道了。因为有id 我想你可能已经计划在那里重复配对。我之前在类似的情况下使用过syncWithoutDetaching。对不起,我帮不上忙,希望有更多经验的人能来。无论如何,祝你好运。
  • 别担心@user3532758 伙计!感谢您分享您的想法。

标签: php mysql database laravel eloquent


【解决方案1】:

试试这个

class Training {
  public function trainingspeakerdates() {
    return $this->hasMany('App\Trainingspeakerdates','training_speaker_id','id')->using('App\TrainingSpeaker');
  }
} 

【讨论】:

  • 抱歉,我需要先访问扬声器并附上每个扬声器的日期。
猜你喜欢
  • 1970-01-01
  • 2018-11-24
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2014-08-26
  • 2020-06-18
  • 1970-01-01
相关资源
最近更新 更多