मुझे नहीं लगता कि लारवेल में ऐसी कोई विधि है। आपको अपनी कस्टम क्वेरी बनानी होगी। यह कस्टम क्वेरी बहुत महंगी हो सकती है क्योंकि कई प्रश्नों को निष्पादित किया जाएगा। इस प्रकार, इसके लिए इष्टतम समाधान, मेरे अनुसार, उपयोगकर्ता और अवसर को एक विदेशी कुंजी के साथ जोड़ना है।
हालांकि, यदि आप उपयोगकर्ता और अवसर को किसी विदेशी कुंजी से लिंक नहीं करना चाहते हैं, तो आप इसे संभालने के लिए एक कस्टम क्वेरी बना सकते हैं। अवसर और क्लाइंट मॉडल के बीच बस "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' के साथ उपयोगकर्ता से संबंधित सभी ग्राहकों के सभी अवसर लौटाएगा।