我有一个可以分配给用户或团队的项目表,这是结构:
id
assignable_id
assignable_type
class Project extends Model {
public function assignable(): MorphTo
{
return $this->morphTo();
}
}
我的团队表包含带有数据透视表的成员:
id
class Team extends Model {
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class);
}
public function projects(): MorphMany
{
return $this->morphMany(Project::class, 'assignable');
}
}
// team_user table
team_id
user_id
最后是我的用户表:
id
class User extends Model {
public function teams(): BelongsToMany
{
return $this->belongsToMany(Team::class);
}
public function projects(): MorphMany
{
return $this->morphMany(Project::class, 'assignable');
}
}
现在的问题是我想直接或通过团队获取已分配给用户的所有项目,正如预期的那样 $user()->projects 返回直接分配给用户的项目。
我尝试了很多解决方案,但没有一个对我有用。