2017-07-01 2 views
0

J'ai les 3 modèles suivants:Laravel 5.2 - Un à plusieurs ou plusieurs à plusieurs relation?

class Job extends Model { 

    public function jobShortlists() 
    { 
     return $this->hasMany('App\JobShortlist'); 
    } 
} 

class Jobseeker extends Model { 

    public function jobShortlists() 
    { 
     return $this->hasMany('App\JobShortlist'); 
    } 
} 

class JobShortlist extends Model { 

    public function jobseeker() 
    { 
     return $this->belongsTo('App\Jobseeker'); 
    } 

    public function job() 
    { 
     return $this->belongsTo('App\Job'); 
    } 
} 

Et les migrations:

Schema::create('jobs', function(Blueprint $table) 
{ 
     $table->increments('id'); 
     $table->string('job_title', 100); 
     ... 
}); 

Schema::create('jobseekers', function(Blueprint $table) 
{ 
     $table->increments('id'); 
     $table->string('name', 100); 
     ... 
}); 

Schema::create('job_shortlists', function(Blueprint $table) 
{ 
     $table->increments('id'); 
     $table->integer('jobseeker_id')->unsigned(); 
     $table->integer('job_id')->unsigned()->unique(); 

     $table->unique(array('jobseeker_id', 'job_id')); 

     $table->foreign('jobseeker_id') 
      ->references('id') 
      ->on('jobseekers') 
      ->onDelete('cascade'); 

     $table->foreign('job_id') 
      ->references('id') 
      ->on('jobs') 
      ->onDelete('cascade'); 
}); 

Un demandeur d'emploi peut ajouter plusieurs emplois à une liste restreinte. Quel type de relation est-ce entre les 3 tables - est-ce un à plusieurs ou plusieurs à plusieurs? Quelles sont les relations correctes qui devraient être définies dans les trois modèles?

Répondre

0

Vous avez quelque chose comme ça

Jobs 
    - Job ID 
    - Else 

JobsJobShortListsPivot 
    - Job ID 
    - Shortlist ID 
    - Else 

JobShortLists 
    - ShortList ID 
    - JobSeeker ID 
    - Else 

    JobSeekers 
    - JobSeeker ID 
    - Else 

Modèle sur Demandeurs d'emploi:

function shortlists(){ 
    return $this->hasMany("\App\JobShortLists"); 
} 

Sur JobShortLists Modèle:

function jobs(){ 
    return $this->belongsToMany("\App\Jobs", "JobsJobShortLists", 
      "Shortlist ID", "Job ID"); 
} 

Je l'ai utilisé comme ça et réussi avant et mon premier source d'apprentissage était:

http://laraveldaily.com/pivot-tables-and-many-to-many-relationships/

Espérons que cela vous aide aussi.