2016-11-13 40 views
1

我正在使用Laravel 5.3广告在通过hasMany关系保存问题。副函数不工作has has many关系Laravel

我有表工作,现场具有一个一对多的关系,即每个工地都有一个或多个工作

,但是当我试图用associate()在工作表中添加job_job_site_id它给我一个错误:

SQLSTATE[42703]: Undefined column: 7 ERROR: column "job_site" of relation "job" does not exist 
LINE 1: update "job" set "updated_at" = $1, "job_site" = $2 ... 
^ (SQL: update "job" set "updated_at" = 2016-11-13 15:29:37, "job_site" = where "job_id" = 3) 

SQLSTATE[42703]: Undefined column: 7 ERROR: column "job_site" of relation "job" does not exist 
LINE 1: update "job" set "updated_at" = $1, "job_site" = $2 ... 
^ 

数据库结构:

job (1st table) 
– job_id 
– job_name 
– job_job_site_id 
- created_at 
- updated_at 

job_site (2nd table) 
– job_site_id 
– job_site_name 
- created_at 
- updated_at 

模型类工作:

class Job extends Model 
{ 
    protected $table = 'job'; 
    protected $primaryKey = 'job_id'; 

    public function jobsite() { 
     return $this->belongsTo('App\Models\JobSite', 'job_site', 'job_job_site_id', 'job_site_id'); 
    } 
} 

模型类现场:

class JobSite extends Model 
{ 
    protected $table = 'job_site'; 
    protected $primaryKey = 'job_site_id'; 

    public function jobs() { 
     return $this->hasMany('App\Models\Job', 'job', 'job_job_site_id', 'job_id'); 
    } 
} 

控制器:

public function jobsiteJobs($data) 
{ 
    $jobsite = JobSite::find(3); 
    $job_id = array(1,2,3); 
    if (!empty($jobsite)) { 
     foreach ($job_id as $id) { 
      $job = Job::find($id); 
      $job->jobsite()->associate($jobsite); 
      $job->save(); 
     } 
     return 'Added'; 
    } 
    else { 
     return 'Not found'; 
    } 
} 

难道我定义错误在这里我的关系?

回答

1

是的,您的错误定义了关系。正确的版本如下:

模型类工作:

class Job extends Model 
{ 
    protected $table = 'job'; 
    protected $primaryKey = 'job_id'; 

    public function jobsite() { 
     return $this->belongsTo('App\Models\JobSite', 'job_job_site_id', 'job_site_id'); 
    } 
} 

模型类现场:

class JobSite extends Model 
{ 
    protected $table = 'job_site'; 
    protected $primaryKey = 'job_site_id'; 

    public function jobs() { 
     return $this->hasMany('App\Models\Job', 'job_job_site_id', 'job_site_id'); 
    } 
} 
+0

我实现你的答案 – okconfused

+0

后面临着同样的问题是误差相同或不同了从前一个? –

+0

我得到了同样的错误 – okconfused