有两个具有一对一关系的表:Products
和 Descriptions
。
控制器返回刀片视图中的两个表。
我使用 foreach 循环来显示 Products 表。
@foreach($products as $product)
...
{{ $product->name }}
{{ $product->price }}
...
@endforeach
我也想显示每个产品的描述
@foreach($products as $product)
...
{{ $product->name }}
{{ $product->price }}
...
{{ $description}}
@endforeach
哪里description->product_id == $product->id
我想过在每个循环中使用嵌套的 foreach 循环或从刀片文件中查询,但似乎效率不高。
有更好的方法吗?
[注意:并非每个产品都有描述]
答案 0 :(得分:1)
我认为您需要将产品模型中的关系添加为:
use Description; // this is your Description model
class Product {
...
public function productDescription(){
return $this->hasOne('Description','product_id','id');
// hasOne here because you want a one to one
}
...
}
当您想调用产品时:
$products = Products::with('productDescription')->get()->toArray();
现在在迭代产品时,从产品项目中获取每个产品的描述:
$description = $product->productDescription;
编辑:对于上面的 html,这是一个示例:
@foreach($products as $product)
{{ $product->name }}
{{ $product->price }}
{{isset($product->productDescription->name) ? $product->productDescription->name : '' }}
<!-- name key is just an example here -->
@endforeach
答案 1 :(得分:0)
我曾经使用树枝但你为什么不使用类似的东西
@if(isset($descriptions[$product->id]))
{{ $descriptions[$product->id] }}
@endif
在刀片中你不能?