diff --git a/README.md b/README.md index cdab3d9..50804d1 100755 --- a/README.md +++ b/README.md @@ -35,6 +35,11 @@ - php artisan tinker +# Merge Json/Resource::with() when using a collection in an API Resource + +- https://github.com/laravel/ideas/issues/781 + + diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index e37c0c0..67edf0a 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -7,6 +7,9 @@ use App\Product; +use App\Http\Resources\ProductResource; +use App\Http\Resources\ProductsResource; + class ProductController extends Controller { @@ -40,8 +43,13 @@ public function __construct(Request $request) { */ public function index() { - $products = Product::with('user')->paginate(10); - return response()->json(['success' => '','data' => $products], 200); + // $products = Product::with('user')->paginate(10); + + return $users = new ProductsResource(Product::with('user')->paginate(10)); + + // return new ProductsResource(Product::with(['user'])->paginate(10)); + + return response()->json(['success' => '','data' => $users], 200); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 1d20cd9..1e39718 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -43,10 +43,18 @@ public function index() // // $users = User::paginate(10); // $users = User::find(1)->product; - // $users = User::with('product')->paginate(10); - $users = UserResource::collection(User::with('product')->paginate(10)); - - return response()->json(['success' => '','result' => $users], 200); + $users = User::with('product')->paginate(10); + // $users = UserResource::collection(User::with('product')->paginate(10)); + // $users = UserResource::make(User::with('product')->find(1)); + + // $users = UserResource::collection(User::with('product')->paginate(10)); + // return $users; + + + // $resource = new UserResource($user); + + $users = UserResource::make(User::with('product')->find(1)); + return $users; } diff --git a/app/Http/Resources/ProductResource.php b/app/Http/Resources/ProductResource.php index ed9589e..7b711f0 100644 --- a/app/Http/Resources/ProductResource.php +++ b/app/Http/Resources/ProductResource.php @@ -4,7 +4,7 @@ use Illuminate\Http\Resources\Json\JsonResource; -class RatingResource extends JsonResource +class ProductResource extends JsonResource { /** * Transform the resource into an array. @@ -12,20 +12,18 @@ class RatingResource extends JsonResource * @param \Illuminate\Http\Request $request * @return array */ + public function toArray($request) { + return [ + 'id' => $this->user_id, + 'user_id' => $this->user_id, + 'product_name' => $this->product_name, + 'product_price' => $this->product_price, + 'user' => $this->user, + ]; - print_r($request); - print_r($this); - - return [ - 'id' => $this->user_id, - 'user_id' => $this->user_id, - 'product_name' => $this->product_name, - 'product_price' => $this->product_price, - 'created_at' => (string) $this->created_at, - 'updated_at' => (string) $this->updated_at, - 'user' => $this->user, - ]; } + + } diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php index dcbb016..b9757b4 100644 --- a/app/Http/Resources/UserResource.php +++ b/app/Http/Resources/UserResource.php @@ -2,16 +2,11 @@ namespace App\Http\Resources; -use Illuminate\Http\Resources\Json\JsonResource; +use Illuminate\Http\Resources\Json\Resource; -class UserResource extends JsonResource +class UserResource extends Resource { - /** - * Transform the resource into an array. - * - * @param \Illuminate\Http\Request $request - * @return array - */ + public function toArray($request) { return [ @@ -20,8 +15,16 @@ public function toArray($request) 'email' => $this->email, 'product' => $this->product, 'created_at' => (string) $this->created_at, - 'updated_at' => (string) $this->updated_at, - "first_page_url" => $this->first_page_url + 'updated_at' => (string) $this->updated_at ]; } + + public function with($request) + { + return [ + 'version' => '1.0', + 'success' => true, + ]; + } + }