"Attempt to read property \"id\" 在字符串上" laravel api
"Attempt to read property \"id\" on string" laravel api
ProductController.php
class ProductController extends Controller
{
public function index(Request $request)
{
$limit = $request->has('limit') ? $request->get('limit') : 10;
$offset = $request->has('offset') ? $request->get('offset') : 0;
$products = Product::offset($offset)->limit($limit)->get();
return new ProductResource($products);
}
//Search Products
public function search($name, Request $request)
{
$limit = $request->has('limit') ? $request->get('limit') : 10;
$offset = $request->has('offset') ? $request->get('offset') : 0;
$products = Product::where('name', 'like', '%' . $name . '%')
->offset($offset)->limit($limit)->get();
return new ProductResource($products);
}
}
ProductResource.php
class ProductResource extends JsonResource
{
public function toArray($request)
{
foreach ($request->all() as $product) {
$response = [
'id' => "p" . $product->id,
'name' => $product->name,
'slug' => $product->slug,
'regular_price' => $product->regular_price,
'sale_price' => $product->sale_price,
'SKU' => $product->SKU,
'stock_status' => $product->stock_status,
'quantity' => "p" . "$product->quantity",
'image' => $product->url,
'images' => $product->url,
'category_id' => $product->category_id,
];
$responses[] = $response;
}
return response($responses, 201);
}
}
这是我从 api (http://127.0.0.1:8000/api/products?limit=5&offset=0) 获取的路线
发送时,
"message": "尝试读取字符串中的 属性 "id"",
"文件": "/Applications/XAMPP/xamppfiles/htdocs/DNI_E_commerce/app/Http/Resources/ProductResource.php",
“行”:20,
在您的搜索功能中,您可以只 return 从 ->get() 查询中获得的 $products。
$products 是数据库中与搜索查询匹配的所有产品的 laravel 集合。集合基本上是一个奇特的对象。 https://laravel.com/docs/8.x/eloquent-collections
如果这样做,您应该能够按原样使用 toArray() 函数,但您也可以只循环遍历集合而不先将其放入数组。
ProductController.php
class ProductController extends Controller
{
public function index(Request $request)
{
$limit = $request->has('limit') ? $request->get('limit') : 10;
$offset = $request->has('offset') ? $request->get('offset') : 0;
$products = Product::offset($offset)->limit($limit)->get();
return new ProductResource($products);
}
//Search Products
public function search($name, Request $request)
{
$limit = $request->has('limit') ? $request->get('limit') : 10;
$offset = $request->has('offset') ? $request->get('offset') : 0;
$products = Product::where('name', 'like', '%' . $name . '%')
->offset($offset)->limit($limit)->get();
return new ProductResource($products);
}
}
ProductResource.php
class ProductResource extends JsonResource
{
public function toArray($request)
{
foreach ($request->all() as $product) {
$response = [
'id' => "p" . $product->id,
'name' => $product->name,
'slug' => $product->slug,
'regular_price' => $product->regular_price,
'sale_price' => $product->sale_price,
'SKU' => $product->SKU,
'stock_status' => $product->stock_status,
'quantity' => "p" . "$product->quantity",
'image' => $product->url,
'images' => $product->url,
'category_id' => $product->category_id,
];
$responses[] = $response;
}
return response($responses, 201);
}
}
这是我从 api (http://127.0.0.1:8000/api/products?limit=5&offset=0) 获取的路线 发送时, "message": "尝试读取字符串中的 属性 "id"", "文件": "/Applications/XAMPP/xamppfiles/htdocs/DNI_E_commerce/app/Http/Resources/ProductResource.php", “行”:20,
在您的搜索功能中,您可以只 return 从 ->get() 查询中获得的 $products。 $products 是数据库中与搜索查询匹配的所有产品的 laravel 集合。集合基本上是一个奇特的对象。 https://laravel.com/docs/8.x/eloquent-collections
如果这样做,您应该能够按原样使用 toArray() 函数,但您也可以只循环遍历集合而不先将其放入数组。