Laravel-通过他人获取关系


Laravel - Access relationship through other

我有以下表格:

entries  
- id 
- category_id 
- name  
field  
 - id  
 - category_id
 - name  
field_values  
- id  
- entry_id  
- field_id  
- value   
category  
 - id  
 - name

每个类别都有特定的字段。如果我添加一个条目,我会选择类别,然后可以为条目的字段输入值。

假设我们有"场馆"类别。场馆有一个名为"容量"的自定义字段。如果我添加一个新闻条目,我需要填写字段"容量"。

这就是我读取条目的字段及其值的方式:

@foreach($data->field_values as $values)
    {{$values->field->name}}: {{$values->value}}
@endforeach  

我只能通过"field_values"表访问字段表。难道不能直接从条目访问字段吗?也许可以使用hasManyThrough?

这(在入门模型中):

public function fields()
{
    return $this->hasManyThrough('App'Field', 'App'FieldValues');
}

引发以下mysql错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fields.field_values_id' in 'on clause' (SQL: select `fields`.*, `field_values`.`entry_id` from `fields` inner join `field_values` on `field_values`.`id` = `fields`.`field_values_id` where `field_values`.`entry_id` in (3))

为什么我需要将field_values_id添加到field?难道没有不同的方法吗?

我只想foreach通过entry->字段,而不是通过entry_field_values->字段

如果您只想访问条目的字段,为什么不创建hasMany关系呢?

进入模型:

public function fields()
{
    return $this->hasMany('App'Field');
}

然后你可以得到一个条目的所有字段为:

$fields = $entry->fields()->get();