我有一个 laravel 项目,它使用带有几个表的 mysql 数据库。让我们首先向您展示我正在使用的所有文件。我的问题是,当我尝试在数据库中创建“Conseillere”时,出现错误:
'SQLSTATE[HY000]: General error: 1364 Field 'date_anniversaire' doesn't have a default value (SQL: insert into `conseilleres` () values ())'
另外,我不知道我所做的是否真的将其正确保存在数据库中。基本上,conseillere 模型只有 2 个日期,但也有 nom、prenom、adresse 和 adresse_courriel。Nom 和 Prenom 位于另一个名为 Personne.Adresse 的表中,而 ville 位于另一个名为 Adresse 的表中。Adresse_courriel 位于另一个名为 Courriel 的表中。Conseillere 具有所有这些属性,但它们在其他表/模型中被引用/包含。Conseillere 模型仅包含 date_anniversaire 和 date_entree 列。Conseillere 是一个 Personne。我将包含一些需要的文件,但我不确定它是否需要更多来帮助解决我的问题。
首先是将 Conseillere 存储到数据库中的 usercontroller 函数:
public function store(){
$input = Input::all();
$unepersonne = Personne::create([]);
$uncourriel = new Courriel;
$adresse = new Adresse;
$conseillere = Conseillere::create([]);
$uncourriel->adresse_courriel = $input['adresse_courriel'];
$unepersonne->nom = $input['nom'];
$unepersonne->prenom = $input['prenom'];
$adresse->adresse = $input['adresse'];
$adresse->ville = $input['ville'];
//the following function are creating drop downs to input a date. for translation purpose, annee=year mois=months and jour=day
$conseillere->date_anniversaire = ConseillereController::construire_date($input['annee_anniversaire']-1, $input['mois_anniversaire']-1, $input['jour_anniversaire']-1);
$conseillere->date_entree = ConseillereController::construire_date($input['annee_entree']-1, $input['mois_entree']-1, $input['jour_entree']-1);
if ($unepersonne->save()){
} else {
return Redirect::back()->withInput()->withErrors($conseillere->validationMessages());
}
}
构造日期函数:
private function construire_date($annee, $mois, $jour)
{
if (checkdate($mois, $jour, $annee)) {
$dateTest = new DateTime;
$dateTest->setDate($annee, $mois, $jour);
return $dateTest->format('Y-m-d');
} else {
return "invalide";
}
}
}
康赛耶模型:
<?php
namespace App\Models;
class Conseillere extends EloquentValidating {
protected $guarded = array('id');
public $timestamps = false;
public function conseillere() {
return $this->belongsTo('App\Models\Conseillere');
}
protected $fillable = [
'nom',
'prenom',
'adresse',
'ville',
'adresse_courriel',
'date_anniversaire',
'date_entree'
];
/**
* Validation
*/
public $validationMessages;
public function validationRules() {
return [
'date_anniversaire' => 'nullable|date',
'date_entree' => 'nullable|date'
];
}
}
人物模型:
<?php
namespace App\Models;
class Personne extends EloquentValidating
{
protected $table = 'personnes';
public $timestamps = false;
protected $fillable = [
'nom',
'prenom',
];
public $validationMessages;
public function validationRules() {
return
[
'personne' => 'required',
];
}
public function utilisateurs(){
return $this->belongsToMany('App\Utilisateur');
}
public function adresse() {
return $this->hasMany('App\Models\Adresse');
}
public function carte_credits(){
return $this->belongsToMany('App\Carte_credit');
}
public function courriels(){
return $this->hasMany('App\Models\Courriel');
}
}
Conseillere的迁移:
public function up()
{
Schema::create('conseilleres', function (Blueprint $table) {
$table->increments('id');
$table->dateTime('date_anniversaire');
$table->dateTime('date_entree');
$table->integer('personne_id')
->unsigned();
$table->foreign('personne_id')
->references('id')
->on('personnes')
->onDelete('cascade');
});
}
人员迁移:
public function up()
{
Schema::create('personnes', function (Blueprint $table) {
$table->increments('id');
$table->string('nom');
$table->string('prenom');
$table->timestamps();
});
}
我已经搜索了一段时间,无法弄清楚为什么存储功能不起作用并且没有保存到数据库中。