Saya tidak berpikir ada metode seperti itu di Laravel. Anda harus membuat kueri khusus. Kueri kustom ini bisa sangat mahal karena beberapa kueri akan dilakukan. Jadi, solusi optimal untuk ini, menurut saya, adalah menghubungkan Pengguna dan Peluang dengan kunci asing.
Namun, jika Anda tidak ingin menautkan Pengguna dan Peluang dengan kunci asing, Anda dapat membuat kueri khusus untuk menangani ini. Cukup tambahkan relasi "hasManyThrough" antara model Peluang dan Klien seperti,
<?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');
}
}
Kemudian buat fungsi statis dalam model Pengguna.
<?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;
}
}
Sekarang Anda dapat mengakses Peluang yang diberikan kepada Pengguna dalam sekali jalan seperti,
Route::get('/', function()
{
return $usersOpportunities = User::getOpportunityOfUser(1);
});
Ini akan mengembalikan semua peluang semua klien yang terkait dengan Pengguna dengan id '1'.