我无法将数据写入表,我收到错误:
SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value
The SQL being executed was: INSERT INTO `contact` (`id`) VALUES (DEFAULT)
Error Info: Array
(
[0] => HY000
[1] => 1364
[2] => Field 'user_id' doesn't have a default value
)
控制器:
$model = new ContactForm();
$model->id = 0;
$model->user_id = Yii::$app->user->id;
$model->save(false);
模型(禁用验证规则):
class ContactForm extends \yii\db\ActiveRecord
{
public $id;
public $user_id;
//...
}
var_dump:
object(app\models\ContactForm)#214 (12) { ["id"]=> int(0) ["user_id"]=> int(4) ["_attributes":"yii\db\BaseActiveRecord":private]=> array(0) { } ["_oldAttributes":"yii\db\BaseActiveRecord":private]=> NULL ["_related":"yii\db\BaseActiveRecord":private]=> array(0) { } ["_relationsDependencies":"yii\db\BaseActiveRecord":private]=> array(0) { } ["_errors":"yii\base\Model":private]=> NULL ["_validators":"yii\base\Model":private]=> NULL ["_scenario":"yii\base\Model":private]=> string(7) "default" ["_events":"yii\base\Component":private]=> array(0) { } ["_eventWildcards":"yii\base\Component":private]=> array(0) { } ["_behaviors":"yii\base\Component":private]=> array(0) { } }
表格:用户和联系表格
$this->createTable('user', [
'id' => $this->primaryKey(),
//...
], $tableOptions);
和
$this->createTable('{{%contact}}', [
'id' => $this->primaryKey(),
'user_id' => $this->integer(11)->notNull(),
//...
], $tableOptions);
$this->createIndex(
'idx-contact-user_id',
'contact',
'user_id'
);
$this->addForeignKey(
'fk-contact-user_id',
'contact',
'user_id',
'user',
'id',
'CASCADE'
);
在这种情况下,手动通过phpMyAdmin进行输入。
问题的原因可能是什么?
模型中有错误,您不需要公开定义这些变量: