无法使用3个表格在Laravel上执行请求

时间:2016-06-26 18:51:31

标签: database laravel

我在一周前开始了laravel,今天我决定正确使用雄辩。

所以我会向你解释我的问题,如果你想知道,是的,我已经找了一个关于主题的解决方案,google .. 我问这个问题大约8个小时..开始累了。 好吧,我创建了3个数据库(使用mgrations,创建关系)

  • 标签[id;名称]
  • 用户[id,不重要]
  • TagsRelationUsers [id,user_id,tag_id]

所以,我只是想通过使用user_id来创建一个请求,该请求在tagsRelationUsers表中提供与用户相关的所有标记名称。

在我的情况下,用户可以拥有无​​限量的标签,而标签可以拥有无​​限量的用户,这就是我创建名为TagsRelationUsers的表的原因。

class User extends Authenticatable

public function tagsRelationsUsers()
{
    return $this->belongsTo('App\TagRelationUser');
}

class Tag extends Model

public function tagsRelationsUsers()
{
    return $this->belongsTo('App\TagRelationUser');
}

如果你可以帮助我,这将是超级酷:)。谢谢!

1 个答案:

答案 0 :(得分:1)

你这里做的事情有点不对,

  1. 错误地调用关系方法。 (对于多对多的关系)。
  2. Laravel从相关表中猜测数据透视表名称。使用表名的单数形式按字母顺序对它们进行排序,并使用' _' (所以在你的情况下tag_user)。但是您使用TagsRelationUsers作为数据透视表,因此您需要明确指定。
  3. 猜测您的数据透视表名称是TagsRelationUsers。

    试试这个。

    class User extends Authenticatable
    
    public function tagsRelationsUsers()
    {
        return $this->belongsToMany('App\Tag', 'TagsRelationUsers', 'tag_id', 'user_id');
    }
    
    class Tag extends Model
    
    public function tagsRelationsUsers()
    {
        return $this->belongsToMany('App\User', 'TagsRelationUsers', 'user_id', 'tag_id');
    }