Php 保存查询结果并以JSON文件格式存储,然后返回-Laravel/Vue
我正在用Laravel制作一个api,以便在前端与Vue通信 首先,我不希望每次加载页面时都向数据库发出请求 解决方案:向数据库发出第一个请求,保存到json文件,然后返回,下一个请求将只发送json文件,而不发送数据库请求。我会在1天后再生 问题:一切正常,但响应不是有效的json格式。因此Vue无法缓存json文件并呈现页面 代码:Php 保存查询结果并以JSON文件格式存储,然后返回-Laravel/Vue,php,json,laravel,Php,Json,Laravel,我正在用Laravel制作一个api,以便在前端与Vue通信 首先,我不希望每次加载页面时都向数据库发出请求 解决方案:向数据库发出第一个请求,保存到json文件,然后返回,下一个请求将只发送json文件,而不发送数据库请求。我会在1天后再生 问题:一切正常,但响应不是有效的json格式。因此Vue无法缓存json文件并呈现页面 代码: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illu
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Product;
use Storage;
class ProductController extends Controller
{
public function home ()
{
$file = 'json\products.json';
$fileExists = Storage::disk('local')->exists( $file );
$storagePath = Storage::disk('local')->path( $file );
if ( $fileExists ) {
if ( time () - 86400 < filemtime ($storagePath ) ) {
return Storage::get($file);
}
}
$products = Product::select( 'id' , 'name' , 'code' , 'description' , 'size' , 'weight' , 'pic_url' 'pic_video' 'long_description' )->limit(200)->get();
//Storage::disk('local')->put('json\products.json', json_encode($products, JSON_PRETTY_PRINT) ); //Doesnot Work
Storage::disk('local')->put('json\products.json', response()->json(['products' => $products ])); // Doesnot Work
return response()->json(['products' => $products ] , 200); // This response works , and vue catches and reads perfectly
}
}
解析如下:
return cache()->remember($cacheKey, 1440 , function () {
$products = Product::select( 'id' , 'name' , 'code' , 'description' , 'size' , 'weight' , 'pic_url' 'pic_video' 'long_description' )->limit(200)->get();
return ['products' => $products];
});
决议如下:
return cache()->remember($cacheKey, 1440 , function () {
$products = Product::select( 'id' , 'name' , 'code' , 'description' , 'size' , 'weight' , 'pic_url' 'pic_video' 'long_description' )->limit(200)->get();
return ['products' => $products];
});
你知道,你可以使用return['products'=>$products]
这样做会返回JSON吗?存储::磁盘('local')->put('json\products.json',['products'=>$products]);->不起作用。不,我的意思是作为您的最终退货也json\products。json
不是有效的文件夹位置不,我的意思是作为您的最终退货->这不是问题所在。问题就在这里:返回存储::get($file);你知道,你可以使用return['products'=>$products]
这样做会返回JSON吗?存储::磁盘('local')->put('json\products.json',['products'=>$products]);->不起作用。不,我的意思是作为您的最终退货也json\products。json
不是有效的文件夹位置不,我的意思是作为您的最终退货->这不是问题所在。问题就在这里:返回存储::get($file);