Laravel与自定义键关系的多对多关系

时间:2018-09-04 12:43:01

标签: laravel eloquent many-to-many

在您将此问题标记为重复之前,请查看详细信息:)我有一个与自定义列链接的多对多关系有关的问题

我有下表

员工

 -Id
 -brink_id <----- This is third party id I am saving of employee
 -name

工作

-id
-brink_id <----- This is third party id I am saving of job
-description

employee_job

-id
-brink_id <----- This is third party id I am saving of relationship for third party
-brink_employee_id
-brink_job_id

在员工模型中,我创建了关系

public function jobs()
{
    return $this->belongsToMany('App\Models\Job','employee_job','brink_employee_id','brink_job_id');
}

在乔布斯模型中

/**
 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
 */
public function employees()
{
    return $this->belongsToMany('App\Models\Employee','employee_job','brink_job_id','brink_employee_id');
}

实际上,我希望与brink_id in employees table表中显示的brink_id in jobs tablebrink_employee_id, brink_job_id in employee_job有很多关系,而不要具有ID(各表的主列)。

但是当我尝试使用以下命令插入数据透视表时,它总是插入员工ID而不是brink_id

  $employee = Employee::with('jobs')->where('brink_id',$employeeJob['brink_employee_id'])->first();

  $employee->jobs()->attach($employeeJob['brink_job_id'], ['is_active' => 1]);

例如,如果employee表中的brink_id为123456且ID为1,则employee_table中的上述代码将在employee_brink_id中存储1,而不是123456。

请让我知道我在做什么错。

1 个答案:

答案 0 :(得分:0)

如果您未指定其他父键和相关键,则它将分别默认为当前模型的主键和相关模型的主键。

将父键名称指定为第5个参数,并将相关键名称指定为第6个参数:

moment.js

但是,在您的人际关系中,我会亲自使用您系统中的ID,而不是第三方系统中的ID。