【发布时间】:2016-08-06 11:11:56
【问题描述】:
在我的 Laravel 应用程序中,我有以下类:
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');
}
}
我可以使用Bar::find(1)->product->users 轻松获取bar 对象的用户,也可以使用User::find(1)->products 获取用户的bar。
如何获取属于特定 foo 的所有 bar 的用户?也就是说,Foo::find(1)->users 应该返回所有拥有属于 Foo 且 id 为 1 的条的用户。它基本上是具有多态和多对多关系的 hasManyThrough。
【问题讨论】:
标签: laravel eloquent many-to-many has-many-through