From fd9e1454435bd05df4fc97c6aa9d035eafbc9909 Mon Sep 17 00:00:00 2001 From: Bruno Fontes Date: Wed, 12 Sep 2018 02:31:03 -0300 Subject: [PATCH] Creating relationships between users/items/products --- app/Http/Controllers/ItemController.php | 13 ++++++------- app/Http/Controllers/ProductController.php | 6 +++--- app/Item.php | 5 +++++ app/Product.php | 2 +- app/User.php | 5 +++++ .../2018_09_08_192040_create_products_table.php | 2 +- resources/views/item.blade.php | 13 +------------ resources/views/item/buttons.blade.php | 6 +++--- 8 files changed, 25 insertions(+), 27 deletions(-) diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index a4f5700..cc95a48 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -9,19 +9,17 @@ class ItemController extends Controller { public function show($id) { - $item = \DB::table('items') - ->join('products', 'items.product_id', '=', 'products.id') - ->where([['products.admin_id', \Auth::id()], ['items.id', $id]]) - ->select('items.*', 'products.admin_id') - ->get(); - $otherItems = Item::where([['product_id', $item[0]->product_id], ['id', '!=', $id]])->get(); + $item = Item::find($id); + if (!$item || $item->product->user_id != \Auth::id()) return back(); + + $otherItems = Item::where([['product_id', $item->product_id], ['id', '!=', $id]])->get(); return view('item', compact('item', 'otherItems')); } public function index() { //TODO: Fazer innerjoint com tabela de users por item - $items = Item::where('admin_id', \Auth::id())->get(); + $items = Item::where('user_id', \Auth::id())->get(); return view('item.index', compact('items')); } @@ -40,6 +38,7 @@ class ItemController extends Controller 'product_id' => 'required' ] ); + $id = Item::insertGetId(['name' => request('item'), 'product_id' => request('product_id')]); //Just remember to add the fillable on Model to make this work \DB::table('item_user')->insert([ 'user_id' => \Auth::id(), 'item_id' => $id]); diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 893df8f..3671d09 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -10,7 +10,7 @@ class ProductController extends Controller { public function index() { - $products = Product::where('admin_id', \Auth::id())->get(); + $products = Product::where('user_id', \Auth::id())->get(); return view('product.index', compact('products')); } @@ -21,7 +21,7 @@ class ProductController extends Controller */ public function store() { - Product::create(['name' => request('product'), 'admin_id' => \Auth::id()]); //Just remember to add the fillable on Model to make this work + Product::create(['name' => request('product'), 'user_id' => \Auth::id()]); //Just remember to add the fillable on Model to make this work return redirect('product'); } @@ -41,7 +41,7 @@ class ProductController extends Controller */ public function show($id) { - $product = Product::where('admin_id', \Auth::id())->find($id); + $product = Product::where('user_id', \Auth::id())->find($id); return view('product.show', compact('product')); } } diff --git a/app/Item.php b/app/Item.php index 9c3856d..ba75eeb 100644 --- a/app/Item.php +++ b/app/Item.php @@ -13,6 +13,11 @@ class Item extends Model return $this->belongsTo(Product::class); } + public function users() + { + return $this->belongsToMany(User::class); + } + public function free($product_id, $user_id) { return $query->where([ diff --git a/app/Product.php b/app/Product.php index bbf440e..482e5c4 100644 --- a/app/Product.php +++ b/app/Product.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; class Product extends Model { - protected $fillable = ['admin_id', 'name']; + protected $fillable = ['user_id', 'name']; public function items() { diff --git a/app/User.php b/app/User.php index b51116e..36c7b6a 100644 --- a/app/User.php +++ b/app/User.php @@ -32,4 +32,9 @@ class User extends Authenticatable { return $this->hasMany(Product::class); } + + public function items() + { + return $this->belongsToMany(Item::class); + } } diff --git a/database/migrations/2018_09_08_192040_create_products_table.php b/database/migrations/2018_09_08_192040_create_products_table.php index 56d8e79..dabaa0a 100644 --- a/database/migrations/2018_09_08_192040_create_products_table.php +++ b/database/migrations/2018_09_08_192040_create_products_table.php @@ -16,7 +16,7 @@ class CreateProductsTable extends Migration Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); - $table->integer('admin_id'); + $table->integer('user_id'); $table->timestamps(); }); } diff --git a/resources/views/item.blade.php b/resources/views/item.blade.php index edc70fc..b4b0451 100644 --- a/resources/views/item.blade.php +++ b/resources/views/item.blade.php @@ -4,20 +4,9 @@
- -
-
- {{ csrf_field() }} -
-
-
-
- @include ('layouts.errors') -
-
- Item: {{$item[0]->name}} + Item: {{$item->name}} @include ('item.buttons')
diff --git a/resources/views/item/buttons.blade.php b/resources/views/item/buttons.blade.php index 2b9a753..6345bef 100644 --- a/resources/views/item/buttons.blade.php +++ b/resources/views/item/buttons.blade.php @@ -3,8 +3,8 @@ - @if ($item[0]->admin_id == \Auth::id()) -
+ @if ($item->product->user_id == \Auth::id()) + @method('PATCH')
@@ -12,7 +12,7 @@ -
+ @method('DELETE')