Laravel - 通过其他方式访问关系

时间:2015-12-11 18:21:03

标签: php mysql laravel laravel-5 eloquent

我有以下表格:

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中添加field_values_id?不是有不同的方法吗?

我只想通过entry->字段进行操作,而不是通过entry_field_values->字段

进行操作

1 个答案:

答案 0 :(得分:0)

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

条目型号:

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

然后您可以获取条目的所有字段:

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