2016-04-26 99 views
2

我即三个表:雄辩:如何获得逆

  1. 人(含列:ID &名)
  2. 分配(与列:PERSON_ID & PROJECT_ID)
  3. 项目(列:编号&标题)

我有Assignments表,因为每个人都可以分配给许多项目。

我有这三种模式:

// People.php 
public function projectAssigned() 
{ 
    return $this->hasMany('App\Assignment', 'person_id'); 
} 

// Assignment.php 
public function person() 
{ 
    return $this->belongsTo('App\People', 'person_id'); 
} 

public function project() 
{ 
    return $this->belongsTo('App\Project', 'project_id'); 
} 

public function task() 
{ 
    return $this->hasMany('App\Task', 'assignment_id'); 
} 

// Project.php 
public function assignment() 
{ 
    return $this->hasMany('App\Assignment', 'project_id'); 
} 

获得的特定项目中分配的人的名单很简单:

how I get it: 
@foreach($project->assignment as $person) 
<tr> 
<td>{{$person->person->firstname.' '.$person->person->lastname}}</td> 
</tr> 
@endforeach 

我的问题是:如何让人们名单未在特定项目中分配

回答

0

例如,在您的Person模型添加方法:人的

public function getNotInProject($projectId) { 
    return $this 
     ->leftJoin('assignment', 'assignment.person_id', '=', 'person.id') 
     ->where('assignment.project_id', '<>', $projectId) 
     ->get(); 
} 

,然后你会得到收集:

@foreach(Person::getNotInProject($project->id) as $person) 
    <tr> 
     <td>{{$person->firstname.' '.$person->lastname}}</td> 
    </tr> 
@endforeach