【问题标题】:Laravel, Eloquent table relating to itself through pivot tableLaravel,通过数据透视表与自身相关的 Eloquent 表
【发布时间】:2014-02-19 12:54:45
【问题描述】:

我有用户类(表):

  • 身份证
  • 用户名

和关系表:

  • user_id
  • 订阅者

理念:每个用户都可以为其他用户订阅。 最后一个变体是(不工作):

/* class User extends Eloquent ... */ 
public function followers() {
    return $this->belongsToMany('User', 'rel_table')->withPivot('user_id');
}

public function following() {
    return $this->belongsToMany('User', 'rel_table')->withPivot('subscribed_by');
}

需要帮助:如何设置?

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    首先,建议您将数据透视表中的字段重命名为follower_idfollowed_id(或类似名称)。这样就更清楚了。

    然后你必须定义这样的关系:

    public function followers() {
        return $this->belongsToMany('User', 'rel_table', 'followed_id', 'follower_id');
    }
    
    public function following() {
        return $this->belongsToMany('User', 'rel_table', 'follower_id', 'followed_id');
    }
    

    withPivot 方法用于定义关系上除两个外键之外的其他属性。

    【讨论】:

    • 谢谢,但是怎么用呢? Auth::user()->followers() // 返回 NULL; Auth::user()->following() // 返回 NULL;
    • 没有更多关于您的错误的解释,我无法帮助您...您可以阅读文档:laravel.com/docs/eloquent#many-to-many
    • 在你的回答中没有回报
    • 你应该收到一个BelongsToMany的实例...我无法想象你为什么会得到一个空值。你确定你收到了吗?您是否与var_dump 联系过?
    • 一切正常。是的,有NULL,因为我复制了你的代码。 *您的代码没有 RETURN $this->...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2016-02-08
    • 2023-02-05
    • 2017-10-17
    相关资源
    最近更新 更多