From 54adb39b83107daba7fc19e3bd76e0d7848b5fd1 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Tue, 30 Nov 2021 10:25:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=95=86=E5=93=81=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=95=86=E5=93=81=E7=89=B9=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProductSpuController.php | 21 ++++++++---- app/Models/ProductSpu.php | 5 +++ app/Models/ProductSpuFeature.php | 11 +++++++ ...0440_create_product_spu_features_table.php | 32 +++++++++++++++++++ resources/lang/zh_CN/product-spu.php | 1 + 5 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 app/Models/ProductSpuFeature.php create mode 100644 database/migrations/2021_11_30_100440_create_product_spu_features_table.php diff --git a/app/Admin/Controllers/ProductSpuController.php b/app/Admin/Controllers/ProductSpuController.php index 661a547d..eaf53f03 100644 --- a/app/Admin/Controllers/ProductSpuController.php +++ b/app/Admin/Controllers/ProductSpuController.php @@ -3,6 +3,7 @@ namespace App\Admin\Controllers; use App\Admin\Repositories\ProductSpu; +use App\Models\ProductFeature; use App\Models\ProductGroup; use Carbon\Carbon; use Dcat\Admin\Admin; @@ -24,11 +25,11 @@ class ProductSpuController extends AdminController $grid->column('id')->sortable(); $grid->column('name'); $grid->column('subtitle'); - $grid->column('cover')->image(80, 80); - $grid->column('sell_price'); - $grid->column('market_price'); - $grid->column('cost_price'); - $grid->column('vip_price'); + // $grid->column('cover')->image(80, 80); + $grid->column('sell_price')->prepend('¥'); + $grid->column('market_price')->prepend('¥'); + $grid->column('cost_price')->prepend('¥'); + $grid->column('vip_price')->prepend('¥'); $grid->column('weight'); $grid->column('created_at')->sortable(); @@ -91,7 +92,8 @@ class ProductSpuController extends AdminController */ protected function form() { - return Form::make(new ProductSpu(), function (Form $form) { + $builder = ProductSpu::with(['features']); + return Form::make($builder, function (Form $form) { $form->display('id'); if ($form->isCreating()) { @@ -111,6 +113,13 @@ class ProductSpuController extends AdminController ->saveFullUrl() ->removable(false) ->autoUpload(); + $form->multipleSelect('features')->options(ProductFeature::all()->pluck('name', 'id'))->customFormat(function ($v) { + if (! $v) { + return []; + } + // 从数据库中查出的二维数组中转化成ID + return array_column($v, 'id'); + }); $form->editor('description'); $form->number('weight'); diff --git a/app/Models/ProductSpu.php b/app/Models/ProductSpu.php index c590faef..f989cf4a 100644 --- a/app/Models/ProductSpu.php +++ b/app/Models/ProductSpu.php @@ -46,4 +46,9 @@ class ProductSpu extends Model { return $this->hasMany(ProductSpuSpec::class, 'product_spu_id'); } + + public function features() + { + return $this->belongsToMany(ProductFeature::class, 'product_spu_features', 'feature_id', 'spu_id'); + } } diff --git a/app/Models/ProductSpuFeature.php b/app/Models/ProductSpuFeature.php new file mode 100644 index 00000000..385ab28d --- /dev/null +++ b/app/Models/ProductSpuFeature.php @@ -0,0 +1,11 @@ +id(); + $table->unsignedBigInteger('feature_id')->comment('特点ID'); + $table->unsignedBigInteger('spu_id')->comment('主商品ID'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_spu_features'); + } +} diff --git a/resources/lang/zh_CN/product-spu.php b/resources/lang/zh_CN/product-spu.php index acccdfc9..7b0c87b0 100644 --- a/resources/lang/zh_CN/product-spu.php +++ b/resources/lang/zh_CN/product-spu.php @@ -13,6 +13,7 @@ return [ 'subtitle' => '商品副标题', 'cover' => '封面图', 'images' => '商品图片', + 'features' => '商品特点', 'description' => '商品详情', 'sell_price' => '销售价格', 'market_price' => '市场价格',