使用 Eloquent 检索产品照片
Retrieve photos for product with Eloquent
我是 Laravel 的新手,我正在开发一个 Laravel 应用程序,可以为一个产品上传 1 到 3 张图片。
上传的每张照片都是 product_photos
table 中的一个新行,带有指向 products
table 的外键,如下所示:
id: 39
product_id: 8
filename: photos/PD8Xep1OEjwGFH6TGpHoWc4fmPcPpOjnGMbEe5Qh.jpeg
**************************************************************
id: 40
product_id: 8
filename: photos/dqI4PzrmkWsPY9hQcddN8J0i2HBPPQhBO5b4PzMn.jpeg
关系如下:
Product 模型有一个 photos 方法 returns $this- >有很多('App\ProductPhotos')
ProductPhotos 模型有一个 product 方法 returns $this- >属于('App\Product')
下面的方法产生了
Property [filename] does not exist on this collection instance
错误。
$products = Product::all();
foreach ($products as $product) {
dd($product->photos->filename);
}
在这种情况下是否可以使用 Eloquent 检索产品的文件名,或者我是否需要为此使用查询生成器。
问题是您试图从 ProductPhotos
集合中获取 filename
属性,而不是 ProductPhotos
模型实例。
像这样尝试:
foreach ($products as $product) {
foreach ($product->photos as $photo) {
dd($photo->filename);
}
}
foreach ($products as $product) {
foreach ($product->photos as $single_photo ) {
dd($single_photo->filename);
}
}
我是 Laravel 的新手,我正在开发一个 Laravel 应用程序,可以为一个产品上传 1 到 3 张图片。
上传的每张照片都是 product_photos
table 中的一个新行,带有指向 products
table 的外键,如下所示:
id: 39
product_id: 8
filename: photos/PD8Xep1OEjwGFH6TGpHoWc4fmPcPpOjnGMbEe5Qh.jpeg
**************************************************************
id: 40
product_id: 8
filename: photos/dqI4PzrmkWsPY9hQcddN8J0i2HBPPQhBO5b4PzMn.jpeg
关系如下:
Product 模型有一个 photos 方法 returns $this- >有很多('App\ProductPhotos')
ProductPhotos 模型有一个 product 方法 returns $this- >属于('App\Product')
下面的方法产生了
Property [filename] does not exist on this collection instance
错误。
$products = Product::all();
foreach ($products as $product) {
dd($product->photos->filename);
}
在这种情况下是否可以使用 Eloquent 检索产品的文件名,或者我是否需要为此使用查询生成器。
问题是您试图从 ProductPhotos
集合中获取 filename
属性,而不是 ProductPhotos
模型实例。
像这样尝试:
foreach ($products as $product) {
foreach ($product->photos as $photo) {
dd($photo->filename);
}
}
foreach ($products as $product) {
foreach ($product->photos as $single_photo ) {
dd($single_photo->filename);
}
}