【问题标题】:Laravel - Eloquent relation - many-to-many - get intermediate table columnsLaravel - 雄辩的关系 - 多对多 - 获取中间表列
【发布时间】:2021-05-04 11:12:03
【问题描述】:

我有一个关于 Laravel Eloquent Relations 的问题。

我的表情况如下:

guests:

  • 身份证
  • 姓名
  • ...

landing_pages

  • 身份证
  • 姓名
  • ...

一位客人可以有多个登录页面。一个登陆页面将有多个客人。 所以我想,我可以在那里使用many-to-many 关系并创建一个新表

guests_landing_pages:

  • 身份证
  • guest_id
  • landing_page_id
  • ...

我可以通过以下方式使用它: 在guest 模型中我可以这样做,创建many-to-many 关系:

public function landing_pages()
{
    return $this->belongsToMany(\App\Models\LandingPage\LandingPage::class, 'guests_landing_pages','landing_page_id','guest_id');
}

... 在landing_page 模型中反之。 但实际上表guests_landing_pages 包含的数据不仅仅是guest_idlanding_page_id 关系。 其中还有其他几个字段:

guests_landing_pages

  • 身份证
  • guest_id
  • landing_page_id
  • identifier_token
  • 最大人数
  • 回答
  • ...

我现在的问题是,我怎样才能最好地实现这一点。如果我如上所述使用many-to-many 关系,我将无法访问中间表中的字段,不是吗? 或者最好的解决方案是创建一个包含所有字段的GuestLandingPages 模型并在两者之间创建hasMany 关系?

【问题讨论】:

    标签: laravel eloquent many-to-many laravel-8


    【解决方案1】:

    Laravel Eloquent 具有检索中间列的功能。

    public function landing_pages()
    {
        return $this->belongsToMany(\App\Models\LandingPage\LandingPage::class, 'guests_landing_pages','landing_page_id','guest_id')
                    ->withPivot('max_persons', 'answers');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-03
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 2015-03-07
      • 2018-10-27
      • 2018-03-28
      相关资源
      最近更新 更多