【问题标题】:Laravel many to many relation not working as expectedLaravel 多对多关系未按预期工作
【发布时间】:2021-08-29 20:50:40
【问题描述】:

这可能是一个愚蠢的问题,但我正在尝试将 1 个表连接到 2 个相关表。

在为 id 为 2 的组件请求数据时,值数组 component_id 1 会显示出来。

Component::class 内部的关系

public function fields()
{
   return $this->hasManyThrough(Field::class, FieldValue::class, 'component_id', 'id', 'id', 'field_id');
}

【问题讨论】:

  • 你能告诉我你的模型是什么吗?组件、字段和字段值?那么一个组件 hasMany Fields 和一个组件 hasMany field_values through field?

标签: php mysql laravel eloquent


【解决方案1】:

也许你犯了错误,试着确定这样的关系:

public function fields()
{
   return $this->hasManyThrough(Field::class, FieldValue::class);
}

public function fields()
{
   return $this->hasManyThrough(Field::class, FieldValue::class, 'component_id', 'field_id', 'id', 'id');
}

当然,检查正确的代码阅读官方documentation如何使用这种关系。

【讨论】:

    【解决方案2】:

    组件::

    public function fields()
    {
       return $this->hasMany(Field::class);
    }
    
    public function values()
    {
       return $this->hasManyThrough(Field::class, FieldValue::class);
    }
    

    Field:: (table) id,component_id

    public function component()
    {
       return $this->belongsTo(Component::class);
    }
    public function values()
    {
       return $this->hasMany(FieldValue::class);
    }
    

    FieldValue:: (table)id,field_id

    public function field()
    {
       return $this->belongsTo(Field::class);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2018-12-28
      • 1970-01-01
      • 2021-11-27
      • 2019-03-20
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多