При отправке формы выдается ошибка: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (portal_job.applicant_job, CONSTRAINT Applic_job_applicant_user_id_foreign FOREIGN KEY (Applic_user_id) REFERENCES DELETE CASE Заявители (идентификатор)(SQL: вставьте в значения Applicant_job (Applicant_user_id, созданный_кат, job_id, updated_at) (4, 2018-10-01 23:46:56, 2, 2018-10-01 23:46:56))
Как я могу сделать вставку в две связанные таблицы?В этом случае было бы много-много отношений.Я не знаю, может ли проблема вызвать создание отношений на MySQL заранее ... если вам нужна дополнительная информация, дайте мне знать, пожалуйста.Я не знаю, что еще делать, потому что я уже пытался сделать это с помощью attach () и был бесполезен.Получил ту же ошибку.
Это код, выполняемый для задачи.Сначала он сохраняет данные в таблицу кандидатов, а затем выполняет вставку в файл Applicant_job, который является промежуточной таблицей, но эта часть бесполезна.
public function store(Request $request, $id) {
$this->validate($request, [
'application_letter' => 'required'
]);
$applicant = new Applicant;
$applicant->application_letter= $request->input('application_letter');
$applicant->job_id = $request->input('job');
$applicant->state = 'pending';
$applicant->user_id = auth()->user()->id;
$applicant->save();
$applicant->jobs()->sync([$id],false);
return redirect("userdashboard");
}
Это модели отношений между таблицами
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Applicant extends Model
{
protected $primaryKey = 'user_id';
public $incrementing = false;
function jobs() {
return $this->belongsToMany('App\Models\Job')->withTimeStamps();
}
function user() {
return $this->belongsTo('App\Models\User','user_id');
}
function profile() {
return $this->hasOne('App\Models\Profile', 'profile');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Job extends Model
{
function category() {
return $this->belongsTo('App\Models\JobCategory');
}
function user() {
return $this->belongsTo('App\Models\User','user_id');
}
function applicants() {
return $this->belongsToMany('App\Models\Applicant', 'applicant_job', 'job_id', 'applicant_user_id')->withTimeStamps();
}
}
Это миграции с соответствующими внешними ключами, используемыми для этой части задачи.
Schema::create('applicants', function (Blueprint $table) {
$table->increments('id');
$table->text('application_letter');
$table->string('state');
$table->timestamps();
$table->integer('user_id')->unsigned();
$table->integer('job_id')->unsigned();
$table->foreign('job_id')->references('id')
->on('jobs')
->onDelete('cascade');
$table->foreign('user_id')->references('id')
->on('users')
->onDelete('cascade');
});
Schema::create('applicant_job', function (Blueprint $table) {
$table->increments('id');
$table->integer('applicant_user_id')->unsigned();
$table->integer('job_id')->unsigned();
$table->timestamps();
$table->foreign('applicant_user_id')->references('id')
->on('applicants')
->onDelete('cascade');
$table->foreign('job_id')->references('id')
->on('jobs')
->onDelete('cascade');
});
Schema::create('jobs', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->decimal('payment');
$table->integer('category_id')->unsigned();
$table->string('position_type');
$table->string('duration_project');
$table->integer('user_id')->unsigned();
$table->timestamps();
$table->foreign('user_id')->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('category_id')->references('id')
->on('job_category')
->onDelete('cascade');
});
Это делается для портала небольшой работы.Если вам нужна дополнительная информация, не стесняйтесь спрашивать.