我正在使用laravel 5.5并且在我的购物车表格迁移中有2列coupons
和carts
我有coupon_code
这将从coupons
表中获取代码结果将是购物车总价的截止价格。
这是我的购物车迁移:
public function up()
{
Schema::create('carts', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('product_id')->unsigned();
$table->integer('coupon_code')->unsigned();
$table->timestamps();
});
Schema::table('carts', function($table) {
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('product_id')->references('id')->on('products');
$table->foreign('coupon_code')->references('code')->on('coupons');
});
}
我尝试运行php artisan migrate
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `carts` add constraint `carts_coupon_code_foreign` foreign key (`coupon_co
de`) references `coupons` (`code`))
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
我该如何解决?
Coupon
迁移
public function up()
{
Schema::create('coupons', function (Blueprint $table) {
$table->increments('id');
$table->string('code')->unique();
$table->decimal('amount');
$table->date('valid_from');
$table->date('valid_to');
$table->timestamps();
});
}
主意!
如果我在购物车表格中设置coupon_code
字符串并且可以为空,然后将其范围用于验证优惠券表中的优惠券代码然后截止价格怎么办?你觉得那会有用吗?如果有,是否有人帮助我进行该范围?
答案 0 :(得分:0)
我注意到这两个字段都有不同的数据类型,例如在购物车表中,coupon_code字段是无符号整数,但在优惠券表上,您将代码字段作为字符串。
购物车迁移:
public function up()
{
Schema::create('carts', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('product_id')->unsigned();
$table->string('coupon_code')->nullable();
$table->timestamps();
});
Schema::table('carts', function($table) {
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('product_id')->references('id')->on('products');
$table->foreign('coupon_code')->references('code')->on('coupons');
});
}
验证coupon_code(例如IN卡车控制器):
public function add_to_cart(Request $request)
{
$request->validate([
'coupon_code' => 'nullable|exist:coupons,code',
]);
if ($request->has('coupon_code')) {
// get code here
$code = $request->input('coupon_code');
}
}