我有一个products表和另外三个表(电压,安培,类别),现在products表将这三个表与voltage,ampere,category hasMany Products
和Products belongsTo voltage,ampere,category
这样的一对多关系联系起来,每个表的id都用作产品表中的外键,比如products_table : id,name,voltage_id,ampere_id,category_id
.Now,如何从这些表中获取所有数据并将其显示在产品的html表中。
产品型号
public function ampere(){
return $this->belongsTo('App\Ampere');
}
public function category(){
return $this->belongsTo('App\Category');
}
public function voltage(){
return $this->belongsTo('App\Voltage');
}
安培模型
public function products(){
return $this->hasMany('App\Product');
}
类别模型
public function brands(){
return $this->hasMany('App\Brand');
}
public function products(){
return $this->hasMany('App\Product');
}
电压模型
public function products(){
return $this->hasMany('App\Product');
}
这是我的刀片式视图
<tr>
<td class="details">
a href="#">Product name</a>
<ul>
<li><span>category</span></li>
<li><span>Ampere</span></li>
<li><span>Voltage</span></li>
</ul>
</td>
</tr>
这是我已经尝试过的
public function showAllProducts(){
$products=Product::all();
$products = Product::with('category','ampere','voltage')->get();
foreach ($products as $product){
echo $product->name." ";
foreach ($product->ampere as $amp){
echo $amp->name;
}
}
}
发布于 2019-06-28 04:34:56
使用with加载多个关系时,必须传递一个数组:
$products = Product::with(['category','ampere','voltage'])->get();
然后,您可以直接使用$product->category->name。
我注意到的另一件事是,您在showAllProducts
中使用了echo,这将不起作用。您需要做的是调用视图函数并使用with函数传递$products。
public function showAllProducts()
{
$products = Product::with(['category','ampere','voltage'])->get();
return view("the_name_of_your_view_file")->with("products,$products);
}
现在,在您的视图中,多亏了刀片式服务器,我们可以在$products
阵列上循环,并显示每种产品及其安培、电压和类别。
@for ( $products as $product )
<tr>
<td class="details">
<a href="#">{{$product->name}}</a>
<ul>
<li><span>{{$product->category->name}}</span></li>
<li><span>{{$product->ampere->name}}</span></li>
<li><span>{{$product->voltage->name}}</span></li>
</ul>
</td>
</tr>
@endfor
https://stackoverflow.com/questions/56797533
复制相似问题