使用 laravel8 一次将数据存储到两个表中
store data into two tables at time using laravel8
我正在尝试将数据存储到数据库中,但我遇到了一种情况,我不知道这样做是否可行。
所以我在数据库中有两个 tables
public function up()
{
Schema::create('castings', function (Blueprint $table) {
$table->increments('id_casting');
$table->string('nom');
$table->string('prenom');
$table->string('cine');
$table->date('date_naissance');
$table->string('lieu_naissance');
$table->integer('mineur')->default('0');
$table->integer('id_representant')->nullable()->unsigned();
$table->timestamps();
$table->foreign('id_representant')->references('id_representant')->on('representants');
});
}
public function up()
{
Schema::create('representants', function (Blueprint $table) {
$table->increments('id_representant');
$table->string('nom_prenom');
$table->string('cine');
$table->string('lien_casting');
$table->integer('actif');
$table->timestamps();
});
}
我的模特:
class Casting Model
{
use HasFactory;
extends protected $fillable = ["id_casting",
"nom", "prenom" , "cine" , "date_naissance","lieu_naissance" ,"mineur"
];
public function representants()
{
return $this->belongsTo('App\Representant');
}
}
和模范代表
class Representant extends Model
{
use HasFactory;
protected $fillable = ["id_representant",
"nom_prenom", "cine" , "lien_casting","actif"
];
function castings() {
return $this->hasMany('Casting');
}
}
我有以下表格:
<form id="castingform" method="post" action="castingss" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="hidden" id="id_hidden" name="id" />
<div class="form-row">
<div class="form-group col-md-6">
<label for="casting_name">Nom</label>
<input type="text" class="form-control" id="nom" name="nom" placeholder="Nom" >
</div>
<div class="form-group col-md-6">
<label for="casting_name">Prénom</label>
<input type="text" class="form-control" id="prenom" name="prenom" placeholder="Prenom" >
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="casting_cin">CIN</label>
<input type="text" class="form-control" id="cine" name="cine" placeholder="Cin">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="casting_date_naissancee">Date de naissance</label>
<div class="input-group date">
<input type="text" class="form-control" id="date_naissance" name="date_naissance">
<span class="input-group-text input-group-append input-group-addon" id="spanEstPaymentDate">
<i class="simple-icon-calendar"></i>
</span>
</div>
</div>
<div class="form-group col-md-6">
<label for="casting_lieu_naissance">Lieu de naissance</label>
<input type="text" class="form-control" id="lieu_naissance" name="lien_naissance" placeholder="Lieu de naissance">
</div>
</div>
<div class="form-group col-md-6 js-guarantor-container" hidden>
<label for="guarantor">Nom et prénom du représentatnt légal </label>
<input type="text" class="form-control" id="nom_prenom" name="nom_prenom" placeholder="Représentant">
</div>
<div class="form-group col-md-6 js-guarantor_identification_number-container" hidden>
<label for="guarantor_identification_number">CIN du représentatnt légal</label>
<input type="number" class="form-control" id="cine_representant" name="cine_representant" placeholder="CINE">
</div>
<div class="form-group col-md-6 js-guarantor_lien-container" hidden>
<label for="guarantor_identification_number">Lien</label>
<input type="text" class="form-control" id="lien_casting" name="lien_casting" placeholder="Lien">
</div>
<div class="form-group" align="center">
<input type="hidden" name="action" id="action" />
<input type="hidden" name="hidden_id" id="hidden_id" />
<input type="submit" name="action_button" id="action_button" class="btn btn-warning" value="ADD" />
</div>
<div class=" col-md-6">
<span id="form_result"></span>
</div>
</form>
我的脚本:
<script type="text/javascript">
$(document).ready(function(){
$('#date_naissance').change(function (evt) {
var dateinput = $('#date_naissance').val();
/* alert(dateinput);*/
var guarantorContainer = document.querySelector('.js-guarantor-container');
var guarantorIdentificationNumberContainer = document.querySelector('.js-guarantor_identification_number-container');
var guarantorLienContainer = document.querySelector('.js-guarantor_lien-container');
var a= moment().diff(moment(evt.target.value, "MM/DD/YYYY"), 'years');
/* alert(a);*/
if (a < 18) {
guarantorContainer.removeAttribute('hidden');
guarantorIdentificationNumberContainer.removeAttribute('hidden');
guarantorLienContainer.removeAttribute('hidden');
} else {
guarantorContainer.setAttribute('hidden', true);
guarantorIdentificationNumberContainer.setAttribute('hidden', true);
guarantorLienContainer.setAttribute('hidden',true);
}
});
});
</script>
我设法将数据插入单个 table,但我发现这个级别的复杂性:
就是在我的表格中插入时,当我从出生日期计算年龄时,我发现年龄小于 18 岁,我必须在 castings
table代表的id,同时插入tablerepresentans
代表的信息名称,代表的cine和link。
此外,如果年龄小于 18 岁,则 mineur
列必须设置为 1
所以我正在我的控制器中尝试以下代码:
public function store(Request $request)
{
$representants = new Representant();
$castings = new Casting();
$date = $request['date_naissance']; // 24/8/1995
$age = Carbon::now()->format('Y')- Carbon::createFromFormat('dd/mm/YYYY', $date)->format('Y');
if ($age < 18) {
$representants->nom_prenom = $request['nom_prenom'];
$representants->cine = $request['cine_representant'];
$representants->lien_casting = $request['lien_casting'];
$representants->save();
$castings->nom = $request['nom'];
$castings->prenom = $request['prenom'];
$castings->cine = $request['cine'];
$castings->date_naissance = $date ;
$castings->lieu_naissance = $request['lieu_naissance'];
$castings->mineur = 1;
$castings->id_representant = $representants->id_representant;
$castings->save();
}else{
$castings->nom = $request['nom'];
$castings->prenom = $request['prenom'];
$castings->cine = $request['cine'];
$castings->date_naissance = $date ;
$castings->lieu_naissance = $request['lieu_naissance'];
}
}
但我收到以下错误:
{消息:“发现意外数据。↵数据丢失”,…}
异常:“Carbon\Exceptions\InvalidFormatException”
文件:“D:\Projet_Cast_Infl\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php”
线路:643
消息:“发现意外数据。\r\nData 丢失”
如果你有任何想法帮助我
提前致谢
您的问题出在 Carbon 方法中,而不是模型中,请检查传递给
的数据
$age = Carbon::now()->format('Y')- Carbon::createFromFormat('dd/mm/YYYY', $date)->format('Y');
$date 可能是问题所在
尝试
$age = Carbon::parse($date)->diff(Carbon::now())->y;
我正在尝试将数据存储到数据库中,但我遇到了一种情况,我不知道这样做是否可行。
所以我在数据库中有两个 tables
public function up()
{
Schema::create('castings', function (Blueprint $table) {
$table->increments('id_casting');
$table->string('nom');
$table->string('prenom');
$table->string('cine');
$table->date('date_naissance');
$table->string('lieu_naissance');
$table->integer('mineur')->default('0');
$table->integer('id_representant')->nullable()->unsigned();
$table->timestamps();
$table->foreign('id_representant')->references('id_representant')->on('representants');
});
}
public function up()
{
Schema::create('representants', function (Blueprint $table) {
$table->increments('id_representant');
$table->string('nom_prenom');
$table->string('cine');
$table->string('lien_casting');
$table->integer('actif');
$table->timestamps();
});
}
我的模特:
class Casting Model
{
use HasFactory;
extends protected $fillable = ["id_casting",
"nom", "prenom" , "cine" , "date_naissance","lieu_naissance" ,"mineur"
];
public function representants()
{
return $this->belongsTo('App\Representant');
}
}
和模范代表
class Representant extends Model
{
use HasFactory;
protected $fillable = ["id_representant",
"nom_prenom", "cine" , "lien_casting","actif"
];
function castings() {
return $this->hasMany('Casting');
}
}
我有以下表格:
<form id="castingform" method="post" action="castingss" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="hidden" id="id_hidden" name="id" />
<div class="form-row">
<div class="form-group col-md-6">
<label for="casting_name">Nom</label>
<input type="text" class="form-control" id="nom" name="nom" placeholder="Nom" >
</div>
<div class="form-group col-md-6">
<label for="casting_name">Prénom</label>
<input type="text" class="form-control" id="prenom" name="prenom" placeholder="Prenom" >
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="casting_cin">CIN</label>
<input type="text" class="form-control" id="cine" name="cine" placeholder="Cin">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="casting_date_naissancee">Date de naissance</label>
<div class="input-group date">
<input type="text" class="form-control" id="date_naissance" name="date_naissance">
<span class="input-group-text input-group-append input-group-addon" id="spanEstPaymentDate">
<i class="simple-icon-calendar"></i>
</span>
</div>
</div>
<div class="form-group col-md-6">
<label for="casting_lieu_naissance">Lieu de naissance</label>
<input type="text" class="form-control" id="lieu_naissance" name="lien_naissance" placeholder="Lieu de naissance">
</div>
</div>
<div class="form-group col-md-6 js-guarantor-container" hidden>
<label for="guarantor">Nom et prénom du représentatnt légal </label>
<input type="text" class="form-control" id="nom_prenom" name="nom_prenom" placeholder="Représentant">
</div>
<div class="form-group col-md-6 js-guarantor_identification_number-container" hidden>
<label for="guarantor_identification_number">CIN du représentatnt légal</label>
<input type="number" class="form-control" id="cine_representant" name="cine_representant" placeholder="CINE">
</div>
<div class="form-group col-md-6 js-guarantor_lien-container" hidden>
<label for="guarantor_identification_number">Lien</label>
<input type="text" class="form-control" id="lien_casting" name="lien_casting" placeholder="Lien">
</div>
<div class="form-group" align="center">
<input type="hidden" name="action" id="action" />
<input type="hidden" name="hidden_id" id="hidden_id" />
<input type="submit" name="action_button" id="action_button" class="btn btn-warning" value="ADD" />
</div>
<div class=" col-md-6">
<span id="form_result"></span>
</div>
</form>
我的脚本:
<script type="text/javascript">
$(document).ready(function(){
$('#date_naissance').change(function (evt) {
var dateinput = $('#date_naissance').val();
/* alert(dateinput);*/
var guarantorContainer = document.querySelector('.js-guarantor-container');
var guarantorIdentificationNumberContainer = document.querySelector('.js-guarantor_identification_number-container');
var guarantorLienContainer = document.querySelector('.js-guarantor_lien-container');
var a= moment().diff(moment(evt.target.value, "MM/DD/YYYY"), 'years');
/* alert(a);*/
if (a < 18) {
guarantorContainer.removeAttribute('hidden');
guarantorIdentificationNumberContainer.removeAttribute('hidden');
guarantorLienContainer.removeAttribute('hidden');
} else {
guarantorContainer.setAttribute('hidden', true);
guarantorIdentificationNumberContainer.setAttribute('hidden', true);
guarantorLienContainer.setAttribute('hidden',true);
}
});
});
</script>
我设法将数据插入单个 table,但我发现这个级别的复杂性:
就是在我的表格中插入时,当我从出生日期计算年龄时,我发现年龄小于 18 岁,我必须在 castings
table代表的id,同时插入tablerepresentans
代表的信息名称,代表的cine和link。
此外,如果年龄小于 18 岁,则 mineur
列必须设置为 1
所以我正在我的控制器中尝试以下代码:
public function store(Request $request)
{
$representants = new Representant();
$castings = new Casting();
$date = $request['date_naissance']; // 24/8/1995
$age = Carbon::now()->format('Y')- Carbon::createFromFormat('dd/mm/YYYY', $date)->format('Y');
if ($age < 18) {
$representants->nom_prenom = $request['nom_prenom'];
$representants->cine = $request['cine_representant'];
$representants->lien_casting = $request['lien_casting'];
$representants->save();
$castings->nom = $request['nom'];
$castings->prenom = $request['prenom'];
$castings->cine = $request['cine'];
$castings->date_naissance = $date ;
$castings->lieu_naissance = $request['lieu_naissance'];
$castings->mineur = 1;
$castings->id_representant = $representants->id_representant;
$castings->save();
}else{
$castings->nom = $request['nom'];
$castings->prenom = $request['prenom'];
$castings->cine = $request['cine'];
$castings->date_naissance = $date ;
$castings->lieu_naissance = $request['lieu_naissance'];
}
}
但我收到以下错误:
{消息:“发现意外数据。↵数据丢失”,…} 异常:“Carbon\Exceptions\InvalidFormatException” 文件:“D:\Projet_Cast_Infl\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php” 线路:643 消息:“发现意外数据。\r\nData 丢失”
如果你有任何想法帮助我
提前致谢
您的问题出在 Carbon 方法中,而不是模型中,请检查传递给
的数据$age = Carbon::now()->format('Y')- Carbon::createFromFormat('dd/mm/YYYY', $date)->format('Y');
$date 可能是问题所在
尝试
$age = Carbon::parse($date)->diff(Carbon::now())->y;