次の挿入クエリがあります。
$salarystuff = array('salary' => $salary, 'from_date' => $salary_from_date, 'to_date' => $salary_to_date);
$this->db->insert('salaries', $salarystuff);
給与表には次の列があります: emp_no| 給与| from_date| to_date (dev.mysql.com から入手できるデータベースを使用しています。
しかし、外部キー制約を示すエラー 1452 が表示されます。このテーブルに挿入できるようにするには、他のテーブルのキー値を参照するにはどうすればよいですか?
これはエラーメッセージです:
子行を追加または更新できません: 外部キー制約が失敗しました (
employees
.salaries
, CONSTRAINTsalaries_ibfk_1
FOREIGN KEY (emp_no
) REFERENCESemployees
(emp_no
) ON DELETE CASCADE)INTO
salaries
(salary
,from_date
,to_date
) 値 ('1000000', '2012-12-27', '2013-01-16')
ありがとうございました
編集:私は次のことを試しています
まず、この関数を使用して employees テーブルにレコードを作成します。
function add_emp($firstname,$lastname,$gender,$date_of_birth,$jobtitle,$dept,$hiredate)
{
$data = array( 'first_name' => $firstname,
'last_name' => $lastname,
'gender' => $gender,
'birth_date' => $date_of_birth,
'hire_date' => $hiredate);
$this->db->trans_start();
$this->db->insert('employees', $data);
$this->db->trans_complete();
if ($this->db->trans_status() === FALSE)
{
$msg = "Adding the new employee failed.";
return $msg;
}
else
{
$msg = "Successfully Added Employee.";
return $msg;
}
}
次に、別の関数で給与を追加します。
function add_salary($firstname,$lastname,$gender,$date_of_birth,$jobtitle,$dept,$hiredate,$salary, $salary_from_date,$salary_to_date)
{
$this->db->select('emp_no');
$this->db->from('employees');
$this->db->where('first_name', $firstname);
$this->db->where('last_name', $lastname);
$this->db->where('gender', $gender);
$this->db->where('hire_date', $hiredate);
$this->db->where('birth_date', $date_of_birth);
$this->db->limit(1);
$selected_employee = $this->db->get();
$salarystuff = array('emp_no' => $selected_employee, 'salary' => $salary, 'from_date' => $salary_from_date, 'to_date' => $salary_to_date);
$this->db->insert('salaries', $salarystuff);
}
どちらもモデルに含まれています。次に、コントローラーで両方の関数を呼び出します。
$employee_insert = $this->user->add_emp($firstname,$lastname,$gender,$date_of_birth,
$jobtitle,$dept, $hiredate);
$salarythings = $this->user->add_salary($firstname,$lastname,$gender,$date_of_birth,$jobtitle,$dept,$hiredate,$salary, $salary_from_date,$salary_to_date);
しかし、 emp_no フィールドに値がないため、エラーが発生します...次の行である可能性があります。
$selected_employee = $this->db->get();
$salarystuff = array('emp_no' => $selected_employee,
私のエラーメッセージは次のとおりです。
クラス CI_DB_mysql_result のオブジェクトを文字列に変換できませんでした