控制器功能:
<?php
public function addImages(Request $request, $imagesProductId) {
$product = Product::create($request->all());
$filenames = array();
if (empty($request->images)) {
$message = "error";
return Redirect::back()->with('message', $message);
}
$rules = [
'images' => 'mimes:jpeg,jpg,png' // allowed MIMEs
// size in pixels
];
$validator = Validator::make($request->all(), $rules);
$result = $validator->fails() ? 'QCVerified' : 'QCFailed';
foreach ($request->images as $photo) {
// echo($result);
$filename = $photo->store('public/uploadedImages');
$filename = substr($filename, 22);
$filenames[] = asset('storage/uploadedImages/' . $filename);
ProductsPhoto::create([
'nonliveStatus' => $result,
'product_id' => $product->id,
'productId' => $imagesProductId,
'filename' => $filename
]);
}
return response()->json($filenames);
}
?>
这是我存储图像数据的存储功能。
功能从图像数组中提取单个图像:
<?php
$liveValues = priceInfo::join('productDescription', 'productDescription.productId', '=', 'productPriceDetails.productId')
->join('productAdditionalInformation', 'productAdditionalInformation.productId', '=', 'productPriceDetails.productId')
->join('products_photos', 'products_photos.productId', '=', 'productAdditionalInformation.productId')
->select('products_phots.filename')
->where('productPriceDetails.nonliveStatus', '=', "QCVerified")
->get();
?>
这里我从表中选择图像文件。它取出了基于单个id存储的多个图像。但是我只需要存储图像数组中的一个图像。
答案 0 :(得分:3)
您当前的数据库查询只列出了所有可能的文件名,因为没有添加ID限制。
由于OP声明您要根据单个ID查找文件名,而您对其他答案的评论表明您不想限制所提取的记录,因此您可以扩展查询以包含ID然后在生成的集合中执行搜索:
// I've included the "productId" column here, but feel free to include any other column as required.
$liveValues = priceInfo::join('productDescription', 'productDescription.productId', '=', 'productPriceDetails.productId')
->join('productAdditionalInformation', 'productAdditionalInformation.productId', '=', 'productPriceDetails.productId')
->join('products_photos', 'products_photos.productId', '=', 'productAdditionalInformation.productId')
->select('products_photos.productId', 'products_photos.filename')
->where('productPriceDetails.nonliveStatus', '=', "QCVerified")
->get();
// Get the image filename for a given productId.
// ID calculation logic here.
$productId = 512; // Sample ID
// $liveValues is a Collection.
$filename = $liveValues->where('productId', $productId)
->pluck('filename')
->first(); // Get first filename if there are multiple.
当然,这只是如何解决这个问题的一个例子。您肯定需要对其进行调整以适应代码的其余部分。
答案 1 :(得分:1)
使用以下代码限制记录
<?php
$liveValues = priceInfo::join('productDescription', 'productDescription.productId', '=', 'productPriceDetails.productId')
->join('productAdditionalInformation', 'productAdditionalInformation.productId', '=', 'productPriceDetails.productId')
->join('products_photos', 'products_photos.productId', '=', 'productAdditionalInformation.productId')
->select('products_phots.filename')
->where('productPriceDetails.nonliveStatus', '=', "QCVerified")
->limit(1)
->get();
?>
检查以下更新的代码: 在这里,您将按产品对图像进行分组,并获得单个产品图像
<?php
$liveValues = priceInfo::join('productDescription', 'productDescription.productId', '=', 'productPriceDetails.productId')
->join('productAdditionalInformation', 'productAdditionalInformation.productId', '=', 'productPriceDetails.productId')
->join('products_photos', 'products_photos.productId', '=', 'productAdditionalInformation.productId')
->select('products_phots.filename')
->where('productPriceDetails.nonliveStatus', '=', "QCVerified")
->limit(1)
->groupBy('products_photos.productId')
->get();
?>
答案 2 :(得分:1)
<?php
$liveValues = priceInfo::join('productDescription', 'productDescription.productId', '=', 'productPriceDetails.productId')
->join('productAdditionalInformation', 'productAdditionalInformation.productId', '=', 'productPriceDetails.productId')
->join('products_photos', 'products_photos.productId', '=', 'productAdditionalInformation.productId')
->select('products_phots.filename')
->where('productPriceDetails.nonliveStatus', '=', "QCVerified")
->get();
?>
在此代码中使用first()而不是get()。
答案 3 :(得分:1)
如果你理解得很好,那么你会有很多产品照片。 如果您在数据库中有一张主照片照片,那么您可以构建如下查询:
SELECT ... FROM ...
[LEFT] JOIN products_photos
ON products_photos.productId = productAdditionalInformation.productId
AND products_photos.is_main = 1
否则使用子查询
SELECT ... , (SELECT filename FROM products_photos WHERE productId = productAdditionalInformation.productId [ORDER BY productId DESC])
FROM ...
很抱歉使用SQL表示法,但我不知道查询 - bulder lawrell。这只是构建SQL查询的典型问题。