【问题标题】:How can I connect one to many relationship in laravel eloquent?如何在 laravel eloquent 中连接一对多关系?
【发布时间】:2019-02-19 16:17:33
【问题描述】:

图像模型:

public function getImage(){
    return $this->belongsTo('App\Product');
}

产品型号:

public function product(){
    return $this->hasMany('App\Image');
}

控制器:

public function index()
{
     $products = Product::all(); //Select *
     return view('product.index',compact('products'));
}

查看:

@foreach($products as $product)
     <td>{{ $product->getImage->image_link}}</td>
@endforeach

错误:

试图获取非对象的属性“image_link”(查看: C:\xampp\htdocs\ecommerce\resources\views\product\index.blade.php)

【问题讨论】:

  • 您需要在您的数据库中添加一些虚拟数据,目前您正试图带来一个空数据。
  • 你需要在你的产品模型而不是图像模型中定义 getImage 关系,这将是 hasMany 关系
  • 你颠倒了方法。 getImage() 应该在产品模型中,product() 在图像模型中。无论如何, $product->getImage 将返回集合,所以尝试 $product->getImage[0]->image_link
  • 已解决!!!我只是缺少 getImage[0] 中的第一个索引。谢谢朋友和 N69S。

标签: php laravel


【解决方案1】:

它们应该是帖子和带有产品ID的产品之间的关系

在 Product.php 中

public function product(){
return $this->hasMany('App\Image');

}

那么你可以使用$product-&gt;images-&gt;image_link

【讨论】:

    【解决方案2】:

    您的图像表中有product_id 字段吗?你的Product 模型中有hasMany 吗?

    在您的Product 模型中应该是如下关系。

    Product.php

    public function images(){
        return $this->hasMany('App\Image');
    }
    

    之后,您可以在产品 for loop $product-&gt;images-&gt;image_link 中使用图片。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-11
      • 2013-02-09
      • 1970-01-01
      • 2017-04-20
      • 2021-04-21
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多