w mojej aplikacji laravel Mam następujących klas:HasManyThrough z polimorficznych i wiele do wielu relacji
class Product extends Model
{
public function extended()
{
return $this->morphTo();
}
public function users {
return $this->belongsToMany('App\User', 'products_users', 'product_id');
}
}
class Foo extends Model
{
public function product()
{
return $this->morphOne('App\Product', 'extended');
}
public function bars()
{
return $this->hasMany('App\Bar');
}
}
class Bar extends Model
{
public function product()
{
return $this->morphOne('App\Product', 'extended');
}
public function foo()
{
return $this->belongsTo('App\Foo');
}
}
class User extends Model
{
public function products()
{
return $this->belongsToMany('App\Product', 'products_users', 'user_id');
}
}
mogę łatwo dostać użytkownikom obiektu kreskowego przy Bar::find(1)->product->users
i mogę również uzyskać kraty użytkownik z User::find(1)->products
.
Jak mogę uzyskać użytkowników wszystkich pasków należących do konkretnego foo? Oznacza to, że Foo::find(1)->users
powinien zwracać wszystkich użytkowników, którzy mają paski należące do Foo o id 1. Jest to w zasadzie hasManyThrough z relacjami polimorficznymi i wiele-do-wielu.
Wygląda na to, że użytkownicy, którzy nie są związani z danym Foo –
, używają instrukcji 'find' zamiast instrukcji' get', a następnie: '$ Foo = static :: with (['bars', 'bars. products ',' bars.product.users ']) -> find ($ this-> id); '(zakładając, że klucz podstawowy to' id') –