首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从具有haMany关系的3个表中获取与1个表相关的数据

从具有haMany关系的3个表中获取与1个表相关的数据
EN

Stack Overflow用户
提问于 2019-06-28 03:29:55
回答 1查看 44关注 0票数 0

我有一个products表和另外三个表(电压,安培,类别),现在products表将这三个表与voltage,ampere,category hasMany ProductsProducts belongsTo voltage,ampere,category这样的一对多关系联系起来,每个表的id都用作产品表中的外键,比如products_table : id,name,voltage_id,ampere_id,category_id .Now,如何从这些表中获取所有数据并将其显示在产品的html表中。

产品型号

代码语言:javascript
复制
 public function ampere(){
    return $this->belongsTo('App\Ampere');
}
 public function category(){
    return $this->belongsTo('App\Category');
}
 public function voltage(){
    return $this->belongsTo('App\Voltage');
}

安培模型

代码语言:javascript
复制
public function products(){
    return $this->hasMany('App\Product');
}

类别模型

代码语言:javascript
复制
 public function brands(){
    return $this->hasMany('App\Brand');
}
public function products(){
    return $this->hasMany('App\Product');
}

电压模型

代码语言:javascript
复制
public function products(){
    return $this->hasMany('App\Product');
}

这是我的刀片式视图

代码语言:javascript
复制
<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>

这是我已经尝试过的

代码语言:javascript
复制
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;
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-28 04:34:56

使用with加载多个关系时,必须传递一个数组:

代码语言:javascript
复制
$products = Product::with(['category','ampere','voltage'])->get();

然后,您可以直接使用$product->category->name。

我注意到的另一件事是,您在showAllProducts中使用了echo,这将不起作用。您需要做的是调用视图函数并使用with函数传递$products。

代码语言:javascript
复制
public function showAllProducts()
{
  $products = Product::with(['category','ampere','voltage'])->get();
  return view("the_name_of_your_view_file")->with("products,$products);
}

现在,在您的视图中,多亏了刀片式服务器,我们可以在$products阵列上循环,并显示每种产品及其安培、电压和类别。

代码语言:javascript
复制
@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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56797533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档