Jeg tror ikke, der er en sådan metode i Laravel. Du skal oprette din tilpassede forespørgsel. Denne brugerdefinerede forespørgsel kan være meget dyr, da der udføres flere forespørgsler. Derfor er den optimale løsning for dette, ifølge mig, at relatere Bruger og Opportunity med en fremmednøgle.
Men hvis du ikke ønsker at forbinde bruger og mulighed med en fremmednøgle, kan du oprette en brugerdefineret forespørgsel til at håndtere dette. Du skal blot tilføje en "hasManyThrough"-relation mellem Opportunity og Client model som,
<?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');
}
}
Opret derefter en statisk funktion i Brugermodel.
<?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;
}
}
Nu kan du få adgang til Opportunity Realted til en Bruger på én gang som,
Route::get('/', function()
{
return $usersOpportunities = User::getOpportunityOfUser(1);
});
Dette vil returnere alle muligheder for alle klienter relateret til bruger med id '1'.