【问题标题】:Retrieve photos for product with Eloquent使用 Eloquent 检索产品的照片
【发布时间】:2017-11-08 10:38:18
【问题描述】:

我是 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模型有一个返回$this->hasMany('App\ProductPhotos')

    photos方法>
  • ProductPhotos 模型有一个 product 方法返回 $this->belongsTo('App\Product')

下面的方法产生一个

此集合实例上不存在属性 [文件名]

错误。

$products = Product::all();

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

在这种情况下是否可以使用 Eloquent 检索产品的文件名,或者我是否需要为此使用查询生成器。

【问题讨论】:

    标签: php laravel foreign-keys laravel-eloquent


    【解决方案1】:

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

    试试这样:

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

    【讨论】:

    • 你可以用 Eoquent 来完成,这里不需要查询生成器!!
    【解决方案2】:
    foreach ($products as $product) {
        foreach ($product->photos as $single_photo ) {
            dd($single_photo->filename);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 2020-06-04
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多