【问题标题】:belongsToMany multiple foreign keys, laravelbelongsToMany 多个外键,laravel
【发布时间】:2021-07-21 04:56:54
【问题描述】:

早安

我目前有一个与 3 个表相关的表。

我想到了“belongsToMany”,但我不知道如何处理 3 个关系

表格:

schools_series(关系)

  • 身份证
  • cycle_id
  • school_id
  • serie_id

循环

  • 身份证
  • 活动(真/假)
  • ** 更多列 **

学校

  • 身份证
  • ** 更多列 **

系列

  • 身份证
  • ** 更多列 **

主模型:

学校

class School 扩展 Model 实现 Presentable { 使用 PresentableTrait;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'network_id',
    'fantasy_name',
    'social_name',
    'email',
    'sim_web_code',
    'state_registration',
    'cnpj',
    'status',
    'start_date',
];

public function series()
{
    return $this->belongsToMany(Serie::class, 'schools_series')->where('id_cycle', 'xxxx');
}

我需要能够根据循环中具有“活动”的“cycle_id”取出“学校系列”

示例 SQL:

SELECT ss.* FROM schools as s
INNER JOIN schools_series as ss
    ON ss.school_id = s.id
INNER JOIN cycle as c
    ON ss.cycle_id = c.id AND c.active = 1
WHERE s.id = 115

【问题讨论】:

  • 你的问题是什么?
  • 你好 Philipp,我需要能够根据循环中具有“活动”的“cycle_id”取出“学校系列”
  • 你尝试过什么?文档很好地解释了如何进行此类查询
  • 我想在“函数系列”里面做,不知道怎么做。我在sql中给了你一个例子

标签: laravel


【解决方案1】:

解决方案:

public function series()
    {
        return $this->belongsToMany(Serie::class, 'schools_series')->withPivot('cycle_id')->join('cycle', 'cycle.id', '=', 'schools_series.cycle_id')->where('cycle.active', '=', 1);
    }

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 2022-01-16
    • 2020-03-28
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多