首页 文章

laravel与雄辩和laravel回归关系

提问于
浏览
0

在我的数据库中,我是一个组织表,这个表有以下关系,

与用户多对多与客户的多对多与项目的一对多

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

与客户一对一

在我的控制器中,我正在做以下事情,

$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');
}

}

Projects

class Project扩展了Eloquent {

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');
}

}

Clients

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');
    }
}

1 回答

  • 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;
    
            }             
    
        }
    
    }
    

相关问题