Rai*_*l24 3 php many-to-many relationship laravel
我有一个模型Job。
AJob可以要求Jobs先完成其他任务才能开始。
A可能是许多人同时Job需要的工作。Jobs
所以,说Job A取决于Job B和Job C,我希望能够打电话job->requiredJobs并获得这两项工作。
就目前情况而言,我有以下几点:
class Job extends Model
{
public function requiredJobs()
{
return $this->hasMany('App\Job', 'required_job_id');
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现如果我创建一个Job D并拥有它 require Job Band Job C,它会覆盖 的Job Arequired jobs 字段,因为它似乎添加required_job_id到所需的作业上,而不是在依赖的作业上创建一个数组。
希望这一切都有道理!我不完全确定我是否需要两个定义,或者是否hasMany是错误的关系(belongsToMany相反?...)
尼克的回答将我推向了正确的方向。
以下是我最终定义模型的方式:
class Job extends Model
{
public function requiredJobs()
{
return $this->belongsToMany('App\Job', null, 'dependent_job_ids', 'required_job_ids');
}
public function dependentJobs()
{
return $this->belongsToMany('App\Job', null, 'required_job_ids', 'dependent_job_ids');
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着当我打电话时dependentJob->requiredJobs()->save(requiredJob),会发生一些事情:
dependentJob获取 ID 数组required_job_ids,我可以调用dependentJob->requiredJobs以获取工作模型的完整列表。requiredJob获取 ID 数组dependent_job_ids,我可以调用requiredJob->dependentJobs以获取工作模型的完整列表。奇迹般有效!