2014-12-01 57 views
0

在我的数据库,我的组织表这个表有以下关系的关系,laravel返回与口才,laravel

许多一对多与用户 许多一对多与客户 一到多与项目

反过来,这些关系具有例如其他关系项目

一到一个与客户

在我的控制,我做以下,

$organisation = Organisation::all(); 

    $organisation->load('users'); 
    $organisation->load('clients'); 
    $organisation->load('teams'); 
    $organisation->load('projects'); 

    return Response::json($organisation, 200); 

因此得到所有的组织和关系数据。

但是我想要做的也是获得关系的关系,例如获得与组织每个项目相关的客户端?我认为做我所做的事情会有效果,但显然不是。

这里是我的模型,

组织,

class Organisation extends Eloquent { 

//Organsiation __has_many__ users (members) 
public function users() 
{ 
    return $this->belongsToMany('User')->withPivot('is_admin'); 
} 

//Organisation __has_many__ clients 
public function clients() 
{ 
    return $this->belongsToMany('Client'); 
} 

//Organisation __has_many__ projects 
public function projects() 
{ 
    return $this->belongsToMany('Project'); 
} 

}

项目

类项目扩展雄辩{

protected $fillable = [ 
    'name', 
    'description', 
    'total_cost', 
    'start_date', 
    'finish_date', 
    'sales_person', 
    'project_manager', 
    'client_id', 
    'organisation_id', 
    'user_id' 
]; 

public function organisations() 
{ 
    return $this->belongsToMany('Organisation'); 
} 

public function salesperson() { 
    return $this->belongsTo('User', 'sales_person'); 
} 

public function clients() { 
    return $this->belongsTo('Client', 'client_id'); 
} 

}

客户

class Client extends Eloquent { 

    public function organisations() 
    { 
     return $this->belongsToMany('Organisation'); 
    } 

    public function users() 
    { 
     return $this->belongsToMany('User'); 
    } 

    public function projects() 
    { 
     return $this->hasMany('Project'); 
    } 
} 

回答

0

你试过:

$organisations = Organisation::with('projects', 'projects.clients')->all(); 

foreach($organisations as $organisation) { 

    foreach($organisation->projects as $project) { 

     foreach($project->clients as $client) { 

      echo $client->name; 

     }    

    } 

}