Я создаю это приложение на Laravel. У меня есть 3 таблицы: «Сотрудники», «Отделы» и «Зарплаты». В таблице «Сотрудники» есть столбцы: id, имя, dept_name, пол и т. Д. У Dept_name есть dept_name, emp_id, а у Salaries есть monthSalaries, emp_id, dept_name
Все приведенные выше таблицы были созданы этими соответствующими моделями.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю DatabaseSeeder, значения вводятся в БД, но они не согласованы, например. Таблица сотрудников с id = 1 и Dept_name = Production, в то время как в таблице Department emp_id = 1 и Dept_name = Tech Support. И эта проблема перетекает и в таблицу зарплат.
Я знаю, что делаю что-то не так, но не могу понять, что именно. Я попытался создать ПК по идентификатору (таблица сотрудников), ссылаясь на emp_id (зарплаты), но не повезло. Я даже попытался обновить приведенный ниже сценарий сеялки БД, но это не привело бы к созданию записей о зарплате, а в некоторых случаях даже оставило emp_id (департаменты) пустым.
Любая помощь / указатели на то, что я делаю неправильно, были бы очень признательны. Спасибо, что нашли время прочитать это :)
Модель сотрудника:
Schema::create('employees', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('dept_name');
$table->string('name');
$table->string('gender');
$table->timestamp('date_of_joining');
$table->dateTime('date_of_birth');
$table->timestamps();
}
Модель отдела:
Schema::create('departments', function (Blueprint $table) {
$table->string('dept_name');
$table->unsignedInteger('employee_id');
$table->timestamps();
});
Модель заработной платы:
Schema::create('salaries', function (Blueprint $table) {
$table->string('monthlySalary');
$table->unsignedInteger('employee_id');
$table->string('dept_name');
$table->timestamps();
});
Сеялка базы данных
public function run()
{
$this->call([UsersTableSeeder::class]);
//creates employees & Departments
factory(App\Employee::class, 25)->create()->each(function ($employee) {
$department = factory(App\Department::class)->make();
$employee->department()->save($department);
$salary = factory(App\Salary::class)->make();
$employee->salary()->save($salary);
});
}
Приложение \ Сотрудник
public function department()
{
return $this->hasOne(Department::class);
}
public function Salary()
{
return $this->hasOne(Salary::class);
}
Приложение \ Отдел
public function employees()
{
return $this->hasMany(Employee::class);
}
public function salaries()
{
return $this->hasMany(Salary::class);
}
Приложение \ Зарплата
public function employeeSalary()
{
return $this->belongsTo(Employee::class);
}