Не мисля, че има такъв метод в Laravel. Трябва да създадете своята персонализирана заявка. Тази персонализирана заявка може да бъде много скъпа, тъй като ще бъдат изпълнени множество заявки. По този начин оптималното решение за това според мен е да се свърже потребителят и възможността с външен ключ.
Ако обаче не желаете да свързвате потребител и възможност с външен ключ, тогава можете да създадете персонализирана заявка, за да се справите с това. Просто добавете връзка "hasManyThrough" между модел на възможност и клиент като,
<?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');
}
}
След това създайте статична функция в потребителския модел.
<?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;
}
}
Сега можете да получите достъп до възможността, предоставена на потребител наведнъж, като,
Route::get('/', function()
{
return $usersOpportunities = User::getOpportunityOfUser(1);
});
Това ще върне всички възможности на всички клиенти, свързани с потребител с идентификатор '1'.