用thinkphp实现商品多规格且保存到mysql中,使用vue element-ui 进行管理
时间: 2023-03-03 18:52:43 浏览: 185
要使用ThinkPHP实现商品多规格的保存,可以考虑使用数据库中的两个表来实现:
1. `product` 表:存储商品的基本信息,如商品名称、描述、价格等。
2. `product_spec` 表:存储商品的规格信息,如颜色、尺寸、库存等。
其中,`product` 表和 `product_spec` 表之间可以使用 `product_id` 字段进行关联。
下面是一个简单的示例:
1. 创建数据库表
```sql
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`description` text NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `product_spec` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_id` int(11) NOT NULL,
`color` varchar(255) NOT NULL,
`size` varchar(255) NOT NULL,
`stock` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
2. 创建模型
创建一个 `Product` 模型和一个 `ProductSpec` 模型,用于操作 `product` 表和 `product_spec` 表。
```php
// application/common/model/Product.php
namespace app\common\model;
use think\Model;
class Product extends Model
{
protected $table = 'product';
public function specs()
{
return $this->hasMany(ProductSpec::class, 'product_id');
}
}
// application/common/model/ProductSpec.php
namespace app\common\model;
use think\Model;
class ProductSpec extends Model
{
protected $table = 'product_spec';
public function product()
{
return $this->belongsTo(Product::class);
}
}
```
3. 创建控制器
创建一个 `ProductController` 控制器,用于处理商品的增删改查操作。
```php
// application/admin/controller/ProductController.php
namespace app\admin\controller;
use app\common\model\Product;
use app\common\model\ProductSpec;
use think\Request;
class ProductController extends BaseController
{
public function index()
{
$products = Product::with('specs')->select();
return $this->success('获取成功', $products);
}
public function create(Request $request)
{
$data = $request->post();
$product = new Product();
$product->name = $data['name'];
$product->description = $data['description'];
$product->price = $data['price'];
$product->save();
$specs = $data['specs'];
foreach ($specs as $spec) {
$productSpec = new ProductSpec();
$productSpec->product_id = $product->id;
$productSpec->color = $spec['color'];
$productSpec->size = $spec['size'];
$productSpec->stock = $spec['stock'];
$productSpec->save();
}
return $this->success('添加成功');
}
public function update(Request $request, $id)
{
$data = $request->post();
$product = Product::get($id);
$product->name = $data['name'];
$product->description = $
阅读全文