Trong ứng dụng Laravel của tôi, tôi có các lớp sau:HasManyThrough với các mối quan hệ đa hình và nhiều-nhiều
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');
}
}
tôi có thể dễ dàng có được những người dùng của một đối tượng thanh sử dụng Bar::find(1)->product->users
và tôi cũng có thể nhận được những chấn song của một người dùng với User::find(1)->products
.
Làm cách nào để có được người dùng của tất cả các thanh thuộc về một foo cụ thể? Tức là, Foo::find(1)->users
sẽ trả về tất cả người dùng có các thanh thuộc về Foo với id 1. Về cơ bản là hasManyThrough với các mối quan hệ đa hình và nhiều-nhiều.
Điều này dường như bao gồm người dùng không liên quan đến Foo –
sử dụng câu lệnh 'find' thay vì câu lệnh' get', sau đó: '$ Foo = static :: with (['bars', 'bars. products ',' bars.product.users ']) -> find ($ this-> id); '(giả sử khóa chính của bạn là' id') –