Eu não acho que exista esse método no Laravel. Você precisa criar sua consulta personalizada. Essa consulta personalizada pode ser muito cara, pois várias consultas serão executadas. Assim, a solução ótima para isso, segundo mim, é relacionar Usuário e Oportunidade com uma chave estrangeira.
No entanto, se você não desejar vincular Usuário e Oportunidade a uma chave estrangeira, poderá criar uma consulta personalizada para lidar com isso. Basta adicionar uma relação "hasManyThrough" entre o modelo de oportunidade e cliente como,
<?php
class Client extends Eloquent{
public function store(){
return $this->hasMany('Store');
}
public function user(){
return $this->belongsTo('User');
}
public function opportunity(){
return $this->hasManyThrough('Opportunity', 'Store');
}
}
Em seguida, crie uma função estática no modelo User.
<?php
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
public function client(){
return $this->hasMany('Client');
}
public function store(){
return $this->hasManyThrough('Store', 'Client');
}
public static function getOpportunityOfUser($userId)
{
$clients = User::find($userId)->client;
foreach ($clients as $client) {
$opportunities[] = Client::find($client->id)->opportunity;
}
return $opportunities;
}
}
Agora você pode acessar a oportunidade de um usuário de uma só vez como,
Route::get('/', function()
{
return $usersOpportunities = User::getOpportunityOfUser(1);
});
Isso retornará todas as oportunidades de todos os clientes relacionados ao usuário com id '1'.