Laravel: SQL 使用代码块在客户对象上设置字段时出错
Laravel: SQL error when using block of code to set field on customer object
我收到以下错误。
SQLSTATE[HY000]: General error: 1364 Field 'code' doesn't have a
default value (SQL: insert into coupons
(updated_at
, created_at
)
values (2019-12-23 14:06:02, 2019-12-23 14:06:02))
我进行了一些调试,发现它来自以下代码块,但不知道为什么。
if ($customer && is_null($customer->referral_code)) {
$coupon = new Coupon;
$coupon->generateReferralCoupon($customer);
$coupon->save();
$customer->referral_code = $coupon->code;
$customer->save();
}
添加 referral_code
的迁移如下。
class AddReferralInfoToShopUsersTable extends Migration
{
public function up()
{
Schema::table('shop_users', function (Blueprint $table) {
$table->text('referral_code')->nullable();
$table->integer('referral_uses')->nullable();
$table->integer('referral_revenue')->nullable();
$table->index(['referral_code']);
});
}
}
查看错误代码,您似乎错过了对 code
属性 的赋值,或者您没有将 code
放入 Coupon
模型中的可填充数组中。
所以很有可能不是:
$coupon->generateReferralCoupon($customer);
你应该使用:
$coupon->code = $coupon->generateReferralCoupon($customer);
我收到以下错误。
SQLSTATE[HY000]: General error: 1364 Field 'code' doesn't have a default value (SQL: insert into
coupons
(updated_at
,created_at
) values (2019-12-23 14:06:02, 2019-12-23 14:06:02))
我进行了一些调试,发现它来自以下代码块,但不知道为什么。
if ($customer && is_null($customer->referral_code)) {
$coupon = new Coupon;
$coupon->generateReferralCoupon($customer);
$coupon->save();
$customer->referral_code = $coupon->code;
$customer->save();
}
添加 referral_code
的迁移如下。
class AddReferralInfoToShopUsersTable extends Migration
{
public function up()
{
Schema::table('shop_users', function (Blueprint $table) {
$table->text('referral_code')->nullable();
$table->integer('referral_uses')->nullable();
$table->integer('referral_revenue')->nullable();
$table->index(['referral_code']);
});
}
}
查看错误代码,您似乎错过了对 code
属性 的赋值,或者您没有将 code
放入 Coupon
模型中的可填充数组中。
所以很有可能不是:
$coupon->generateReferralCoupon($customer);
你应该使用:
$coupon->code = $coupon->generateReferralCoupon($customer);