Laravel中如何通过Price模型的size_id外键获取关联Size模型的name值
解决方案
- 第一步:在Price模型中定义与Size模型的从属关联
在app/Models/Price.php文件中添加如下关联方法,方法名需和模板中调用的size属性保持一致:
public function size() { // 外键名、关联主键名不符合Laravel默认规则时,可手动传入第二、第三参数指定 return $this->belongsTo(Size::class); }
- 第二步:优化查询逻辑,开启关联预加载
控制器查询Product数据时,使用with方法预加载prices下嵌套的size关联,避免出现N+1查询问题:
$products = Product::with('prices.size')->get();
- 第三步:修正Blade模板的遍历逻辑
原模板存在两个问题:若$products是多产品的集合,不能直接调用prices属性,需先遍历产品再遍历对应价格条目;遍历价格条目时的变量名误用易引发逻辑混淆,修正后写法如下:
@foreach($products as $productItem) @foreach($productItem->prices as $price) <p>{{ $price->min }}</p> <p>{{ $price->max }}</p> <p>{{ $price->size->name }}</p> @endforeach @endforeach
若你查询的是单个产品实例,可去掉外层的产品遍历,直接遍历单个产品的prices属性即可。
内容的提问来源于stack exchange,提问作者Mehdi Yaghoubi
相关产品推荐
相关产品推荐

