首页 文章

使用Eloquent检索产品的照片

提问于
浏览
1

我是Laravel的新手,我正在开发一个Laravel应用程序,可以为一个产品上传1到3张图片 .

上传的每张照片都是 product_photos 表中的新行,其中包含 products 表的外键,如下所示:

id: 39
product_id: 8
filename: photos/PD8Xep1OEjwGFH6TGpHoWc4fmPcPpOjnGMbEe5Qh.jpeg
**************************************************************
id: 40
product_id: 8
filename: photos/dqI4PzrmkWsPY9hQcddN8J0i2HBPPQhBO5b4PzMn.jpeg

关系如下:

  • Product Model有 photos 方法,返回 $this->hasMany('App\ProductPhotos')

  • ProductPhotos Model有 product 方法,返回 $this->belongsTo('App\Product')

以下方法产生一个

此集合实例上不存在属性[filename]

错误 .

$products = Product::all();

foreach ($products as $product) {
    dd($product->photos->filename);
}

在这种情况下是否可以使用Eloquent检索产品的文件名,或者我是否需要使用查询构建器 .

2 回答

  • 1

    问题是您试图从 ProductPhotos 集合中获取 filename 属性,而不是 ProductPhotos 模型实例 .

    试试这样:

    foreach ($products as $product) {
        foreach ($product->photos as $photo) {
            dd($photo->filename);
        }
    }
    
  • 1
    foreach ($products as $product) {
        foreach ($product->photos as $single_photo ) {
            dd($single_photo->filename);
        }
    }
    

相关问题