Browse Source

make type cateory and relation tabal product

azam 4 years ago
parent
commit
c3fc2fc6ee

+ 4 - 24
app/Models/Category.php

@@ -2,7 +2,7 @@
 
 namespace App\Models;
 use App\User;
-use Packages\Product\Models\Product;;
+use Packages\Product\Models\Product;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
 class Category extends Model
@@ -17,29 +17,9 @@ class Category extends Model
         return $this->belongsTo(User::class, 'creator_id', 'id');
     }
 
-    public function category()
-    {
-        return $this->morphedByMany('Packages\Product\Models', 'categorizable');
-    }
-    public function getTypeAttribute($value)
-    {
-
-        switch ($value) {
-            case 0:
-                $type= 'ساده';
-                break;
-            case 1:
-                $type= 'متغیر';
-                break;
-            case 2:
-                $type= 'باندل';
-                break;
 
-            default:
-                $type='';
-
-        }
-        return $type;
+    public function products()
+    {
+        return $this->morphedByMany(Product::class, 'categorizable');
     }
-
 }

+ 5 - 8
database/migrations/2020_06_23_111929_craete_categorizables_tabla.php → database/migrations/2020_06_24_062628_create_categorizables_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CraeteCategorizablesTabla extends Migration
+class CreateCategorizablesTable extends Migration
 {
     /**
      * Run the migrations.
@@ -14,13 +14,10 @@ class CraeteCategorizablesTabla extends Migration
     public function up()
     {
         Schema::create('categorizables', function (Blueprint $table) {
-            $table->id();
-            $table->integer('category_id');
-            $table->integer('categorizable_id');
-            $table->string('categorizable_type');
-
-
 
+             $table->integer('category_id');
+             $table->integer('categorizable_id');
+             $table->string('categorizable_type');
         });
     }
 
@@ -31,6 +28,6 @@ class CraeteCategorizablesTabla extends Migration
      */
     public function down()
     {
-        //
+        Schema::dropIfExists('categorizables');
     }
 }

+ 0 - 0
integer('categorizable_id')


+ 5 - 0
integer('category_id')

@@ -0,0 +1,5 @@
+
+                                                            
+  Too many arguments, expected arguments "command" "name".  
+                                                            
+

+ 53 - 36
packages/product/src/Http/Controllers/ProductController.php

@@ -3,11 +3,11 @@
 namespace Packages\Product\Http\Controllers;
 
 use App\Http\Controllers\Controller;
-
-use Packages\Product\Models\User;
+use Facade\Ignition\Support\Packagist\Package;
 use Packages\Product\Models\Product;
 use Illuminate\Http\Request;
 use App\Models\Category;
+use phpDocumentor\Reflection\Types\Compound;
 
 class ProductController extends Controller
 {
@@ -16,32 +16,29 @@ class ProductController extends Controller
 
     }
 
-//  show  page product ************
+//  *******************************************show  page product ************
     public function index()
     {
 
         $products = Product::orderBy('id', 'DESC')->paginate(20);
-
-        return view('product::index', compact('products'));
+        $categories = Category::orderBy('id', 'DESC')->get();
+        return view('product::index', compact('products', 'categories'));
 
     }
 
-// page create products *****************
+//**************************************************** page create products *****************
     public function create()
     {
-        $products = Product::orderBy('id', 'DESC')->paginate(20);
         $categories = Category::orderBy('id', 'DESC')->get();
-
-        return view('product::product.create', compact('products', 'categories'));
-
+        return view('product::product.create', compact( 'categories'));
     }
 
-// save products ******************
+// *********************************************************save products ******************
 
     public function store(Request $request)
     {
 
-        $validatedData= $request->validate([
+        $validatedData = $request->validate([
             'title' => 'required|max:100',
             'price' => 'required',
             'status' => 'required',
@@ -49,7 +46,7 @@ class ProductController extends Controller
             'type' => 'required',
 
 
-        ],[
+        ], [
             'title.required' => 'فیلد عنوان الزامی می باشد.',
             'price.required' => 'فیلد قیمت الزامی می باشد.',
             'status.required' => 'فیلد وضعیت الزامی می باشد.',
@@ -57,37 +54,43 @@ class ProductController extends Controller
             'type.required' => 'فیلد نوع محصول الزامی می باشد.',
 
         ]);
-        $request->merge([
-            'price' => preg_replace( '/[^0-9]+/', '', $request->price ),
-            'sale_price' => preg_replace( '/[^0-9]+/', '', $request->sale_price ),
-            ]);
-
-      $data = array_merge($request->all(),['creator_id' => auth()->user()->id]);
 
+        $request->merge([
+            'price' => preg_replace('/[^0-9]+/', '', $request->price),
+            'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price),
+        ]);
+//        $data = array_merge($request->except('categories'), ['creator_id' => auth()->user()->id]);
+
+        $data = [
+          'title' => $request->title,
+          'slug' => $request->slug,
+          'sku' => $request->sku,
+          'price' => $request->price,
+          'sale_price' =>$request->sale_price ,
+          'type' =>$request->type ,
+          'status' =>$request->status ,
+          'discription' =>$request->discription ,
+          'creator_id' => auth()->user()->id
+        ];
         $product = Product::create($data);
-
-
-
-        $product->categories()->attach($request->categories);
-
-
+         $product->categories()->sync($request->categories);
         $msg = 'ذخیره محصول با موفقیت انجام شد ';
         return redirect(route('products.edit', $product->id))->with('success', $msg);
     }
 
-    // edit page product
+    // ******************************************************edit page product*********************************************
 
     public function edit(Product $product)
     {
-
-        return view('product::product.edit', compact('product'));
+        $categories = Category::orderBy('id', 'DESC')->get();
+        return view('product::product.edit', compact('product', 'categories'));
     }
 
-// update page product
+// *******************************************update page product*****************************************
 
     public function update(Request $request, Product $product)
     {
-        $validatedData= $request->validate([
+        $validatedData = $request->validate([
             'title' => 'required|max:100',
             'price' => 'required',
             'status' => 'required',
@@ -95,7 +98,7 @@ class ProductController extends Controller
             'type' => 'required',
 
 
-        ],[
+        ], [
             'title.required' => 'فیلد عنوان الزامی می باشد.',
             'price.required' => 'فیلد قیمت الزامی می باشد.',
             'status.required' => 'فیلد وضعیت الزامی می باشد.',
@@ -104,18 +107,32 @@ class ProductController extends Controller
 
         ]);
         $request->merge([
-            'price' => preg_replace( '/[^0-9]+/', '', $request->price ),
-            'sale_price' => preg_replace( '/[^0-9]+/', '', $request->sale_price ),
+            'price' => preg_replace('/[^0-9]+/', '', $request->price),
+            'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price),
         ]);
-        $data = array_merge($request->all(),['creator_id'=>auth()->user()->id]);
-            $product->update($data);
 
+//        $data = array_merge($request->all(), ['creator_id' => auth()->user()->id]);
+        $data = [
+            'title' => $request->title,
+            'slug' => $request->slug,
+            'sku' => $request->sku,
+            'price' => $request->price,
+            'sale_price' =>$request->sale_price ,
+            'type' =>$request->type ,
+            'status' =>$request->status ,
+            'discription' =>$request->discription ,
+            'creator_id' => auth()->user()->id
+        ];
+
+        $product->update($data);
+        $product->categories()->sync($request->categories);
 
         $msg = 'ویرایش محصول با موفقیت انجام شد ';
+
         return redirect(route('products.index'))->with('success', $msg);
     }
 
-    // delete products
+    //***************************** delete products*****************************************
     public function destroy(Product $product)
     {
 

+ 20 - 17
packages/product/src/Models/Product.php

@@ -1,61 +1,64 @@
 <?php
 
 namespace Packages\Product\Models;
-
+use App\Models\Category;
 use Illuminate\Database\Eloquent\Model;
 use App\User;
 use Illuminate\Database\Eloquent\SoftDeletes;
-use App\Models\Category;
+
+
 class Product extends Model
 {
     use SoftDeletes;
 
-    protected $guarded = [];
+    protected $fillable = ['title', 'discription', 'price', 'creator_id'];
+    //protected $guarded = [];
 
     public function user()
     {
         return $this->belongsTo(User::class, 'creator_id', 'id');
     }
 
+
     public function categories()
     {
-        return $this->morphToMany('App\Models\Category', 'categorizable');
+        return $this->morphToMany(Category::class, 'categorizable');
     }
 
-
     public function getTypeAttribute($value)
     {
 
         switch ($value) {
             case 0:
-                $type= 'ساده';
-    break;
+                $type = 'ساده';
+                break;
             case 1:
-                $type= 'متغیر';
-    break;
+                $type = 'متغیر';
+                break;
             case 2:
-                $type= 'باندل';
-    break;
+                $type = 'باندل';
+                break;
 
             default:
-                $type='';
+                $type = '';
 
         }
         return $type;
     }
+
     public function getStatusAttribute($value)
     {
 
         switch ($value) {
             case 0:
-                $type= 'ناموجود';
-            break;
+                $type = 'ناموجود';
+                break;
             case 1:
-                $type= 'موجود';
-            break;
+                $type = 'موجود';
+                break;
 
             default:
-                $type='';
+                $type = '';
 
         }
         return $type;

+ 2 - 2
packages/product/src/views/index.blade.php

@@ -94,8 +94,8 @@
                                         </td>
                                         <td>
 
-                                            @foreach($product->categories->pluck('name') as $category)
-                                                {{$category}}
+                                            @foreach($product->categories->pluck('title') as $category)
+                                                <span>{{$category}}</span>
                                             @endforeach
                                         </td>
                                         <td class="d-flex">

+ 17 - 20
packages/product/src/views/product/create.blade.php

@@ -121,34 +121,31 @@
                                     <div class="form-group">
                                         <label for="status">{{ __(' وضعیت محصول') }}</label><i class="required">&nbsp; *</i>
                                         <select id="status" type="text"
-                                                class="form-control @error('status') is-invalid @enderror" name="status"
-                                                value="{{ old('status') }}" required autocomplete="status">
-                                            <option value="1">موجود</option>
+                                                class="form-control select2 @error('status') is-invalid @enderror" name="status"
+                                                value="انتخاب کنید" required autocomplete="status" multiple>
                                             <option value="0">ناموجود</option>
+                                            <option value="1">موجود</option>
                                         </select>
-{{--                                        <div class="form-group">--}}
-{{--                                            <label for="categories[]">{{ __(' دسته بندی') }}</label><i class="required">&nbsp; *</i>--}}
-{{--                                            <select id="categories" type="text"--}}
-{{--                                                    class="form-control @error('categories[]') is-invalid @enderror" name="categories[]"--}}
-{{--                                                    value="{{ old('categories[]') }}" required autocomplete="categories[]">--}}
-{{--                                                @foreach($categories as $cat)--}}
-{{--                                                    <option value="{{$cat->id}}">{{$cat->title}}</option>--}}
-{{--                                                @endforeach--}}
-{{--                                            </select>--}}
-
-
-{{--                                            @error('status')--}}
-{{--                                            <span class="invalid-feedback" role="alert">--}}
-{{--                                            <strong>{{ $message }}</strong>--}}
-{{--                                        </span>--}}
-{{--                                            @enderror--}}
-{{--                                        </div>--}}
                                         @error('status')
                                         <span class="invalid-feedback" role="alert">
                                             <strong>{{ $message }}</strong>
                                         </span>
                                         @enderror
                                     </div>
+                                        <div class="form-group">
+                                            <label for="categories[]">{{ __(' دسته بندی') }}</label><i class="required">&nbsp; *</i>
+                                            <select id="categories" type="text"
+                                                    class="form-control @error('categories[]') is-invalid @enderror" name="categories[]"
+                                                    value="{{ old('categories[]') }}" required autocomplete="categories[]">
+                                                @foreach($categories as $cat)
+                                                    <option value="{{$cat->id}}">{{$cat->title}}</option>
+                                                @endforeach
+                                            </select>
+
+
+
+                                        </div>
+
                                     <div class="form-group">
                                         <label for="discription">{{ __(' توضیحات  محصول') }}</label></label><i class="required">&nbsp; *</i>
                                         <textarea id="discription" type="text"

+ 17 - 1
packages/product/src/views/product/edit.blade.php

@@ -103,7 +103,7 @@
 
                                         <div class="form-group">
                                             <label for="sale_price">{{ __(' قیمت فروش ویژه') }}</label>
-                                            <input id="sale_price" type="sale_price"
+                                            <input id="sale_price" type="text"
                                                    class="form-control price @error('sale_price') is-invalid @enderror"
                                                    name="sale_price"
                                                    value="{{$product->sale_price}}" required autocomplete="sale_price">
@@ -114,7 +114,23 @@
                                         </span>
                                             @enderror
                                         </div>
+                                        <div class="form-group">
+                                            <label for="categories[]">{{ __(' دسته بندی') }}</label><i class="required">&nbsp; *</i>
+                                            <select id="categories" type="text"
+                                                    class="form-control @error('categories[]') is-invalid @enderror" name="categories[]"
+                                                     required autocomplete="categories[]">
+                                                @foreach($categories as $cat)
+                                                    <option value="{{$cat->id}}" >{{$cat->title}}</option>
+                                                @endforeach
+                                            </select>
+
 
+                                            @error('status')
+                                            <span class="invalid-feedback" role="alert">
+                                            <strong>{{ $message }}</strong>
+                                        </span>
+                                            @enderror
+                                        </div>
                                         <div class="form-group">
                                             <label for="type">{{ __(' نوع محصول') }}</label><i class="required">&nbsp; *</i>
                                             <select id="type" type="text"

+ 1 - 1
resources/views/panel/categories/index.blade.php

@@ -38,7 +38,7 @@
                         @component('components.table')
                             @slot('thead')
                                 <tr>
-                                    <th>شماره بندی</th>
+                                    <th>شماره دسته بندی</th>
                                     <th>نام دسته بندی</th>
                                     <th>slug</th>
                                     <th>نوع دسته بندی</th>