【问题标题】:Laravel 4 Models and Pivot tablesLaravel 4 模型和数据透视表
【发布时间】:2014-04-17 16:18:15
【问题描述】:

我猜我猜 Laravel 4 应用程序中的数据透视表指的是什么。我有一个 users 表、一个 team 表和一个 team_user 表(枢轴)

数据透视表结构是:

id (primary key)
team_id (foreign key to team table)
user_is (foreign key to user table)
created_at
updated_at

在我的团队模型中,我想为队友创建关系。

public function teammates(){
    return $this->belongsToMany('????');
}

如何使用数据透视表显示用户的信息(名字、姓氏),以便我可以执行类似的操作

@foreach($team->teammates as $teammate)
{{echo $teammate->first_name $teammate->last_name}}
@endforeach

【问题讨论】:

    标签: php laravel-4 eloquent


    【解决方案1】:

    如果您的密钥是默认 (id),则:

    public function teammates(){
        // belongsToMany (RelatedModel, table, thisModelKeyOnPivot, relatedModelKeyOnPivot)
        return $this->belongsToMany('User', 'team_user', 'team_id', 'user_id');
    }
    

    【讨论】:

    • 您知道是否也可以访问数据透视表中的其他字段吗?例如,如果我想显示 created_at 日期?我正在处理一个数据透视表,其中包含来自其他两个表的 id,还有一个描述字段,我正在尝试显示该描述值......这可能吗?
    • @DianeKaplan 有 withPivot 方法,您可以将其附加到上述定义中,并且这些字段将包含在模型的数据透视数据中。
    【解决方案2】:

    这应该可以解决问题:

    public function teammates(){
        return $this->belongsToMany('User', 'team_user', 'user_id', 'team_id');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      相关资源
      最近更新 更多