Laravel - 从关系中检索结果

时间:2018-04-17 06:32:57

标签: laravel

我需要任何人帮助解决这个问题 我在Laravel创建了一个小项目 我有两张桌子:电缆和协会。

电缆
id |电缆|价格

1 | OMDS001 | 144.50
2 | OMDS001-MC | 152.70
3 | OMDS001-NC | 149.00
4 | AR-T4CR | 167.90

协会
cable_id | cable_associated_id

1 | 2
1 | 3个

关系是:一根电缆有多个关联
我必须设置最终销售价格

限制条件是,如果电缆相互关联(如1,2和3),则每个电缆的最终售价必须最高。

在这种特定情况下,最终销售价格必须是:

1 | OMDS001 | 152.70
2 | OMDS001-MC | 152.70
3 | OMDS001-NC | 152.70
4 | AR-T4CR | 167.90

该值必须仅是可视的,不得在数据库中输入 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

我假设您已创建了相应的模型,例如App\CableApp\Association

根据Laravel Eloquent Documentation,您可以在模型中创建关系:

电缆型号

class Cable extends Model {
  public function associations() {
    return $this->hasMany('App\Association');
  }

  [...]
}

关联模式

class Association extends Model {
  public function cable() {
    return $this->belongsTo('App\Cable');
  }

  [...]
}

在您的控制器中,您可以遍历关联数组:

$cable = Cable::find($id);

$totalPrice = $cable->price;

foreach($cable->associations as $association) {
  $totalPrice = $totalPrice + $association->price;
}

如果关系定义正确,$cable->association属性包含一个包含每个关联电缆的数组。

请注意:这是一些伪代码,我做了一些假设。对于关系,您需要在表中指定正确的外键列名称。有关详细信息,请参阅上述Eloquent ORM文档。

答案 1 :(得分:0)

感谢您的帮助。所有的假设都是正确的 只要我单独寻找它(使用find方法)我就没有问题 我的问题是:

CableController 中,我有公共功能索引,可以在查看cables.index

中返回所有电缆
$cables = Cable::all();
return (cables.view, compact('cables');


视图有一个包含所有电缆的桌子 here


如果你在Prezzo Vendita专栏中看到我必须得到那个结果(也就是说,它们之间的电缆价格最高)