php - Laravel - 通过其他访问关系

标签 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

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

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

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

@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->field进行foreach,而不是通过entry_field_values->field进行foreach

最佳答案

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

入门型号:

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

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

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

关于php - Laravel - 通过其他访问关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34230070/

相关文章:

php - 复杂的sql连接查询

php - 如何通过更改通过引用传递的参数来对调用具有副作用的函数的方法进行单元测试?

php - 一次查询插入多条记录

php - Laravel 8 文件上传验证失败,任何规则

php - 从 MySQL 中的多个表中选择唯一记录

php - 这个 zend 更新语句的流程是什么

mysql - 数据库表关系设计

mysql - 如何在Mysql中使用DATE过滤重复的行

mysql - 如何根据3种关系选择表中的项目?

php - Laravel 项目面板 orderby 在他们的优先级上不起作用