与3个表的雄辩关系

时间:2017-04-03 14:49:01

标签: laravel eloquent relationship

我是Stack Overflow和Laravel的新手。

我尝试在Laravel中开发一个变量配置文件系统,我有3个表(' User',' User_Fields',' Fields')。

Fields表的结构如下: Fields

user_fields表的结构如下: user_fields

User表是Laravel 5附带的标准表

现在我希望从user_fields获取所有字段,具体取决于选择或登录的user。如果user_field不存在,则模型应返回{{ 1}}或为null创建新记录。

我尝试了很多"解决方案"与(user_fieldhasManyThrough)一样雄辩,但我没有得到我想要的结果。

关系方法有解决方案吗?

感谢您的帮助,抱歉我的英文不好:/

1 个答案:

答案 0 :(得分:0)

您应该使用belongsToMany()->withPivot()retrieve the intermediate table columns。您的user_fields是您的数据透视表,因此您应该拥有以下用户模型:

class User extends Model
{
    public function fields()
    {
        return $this->belongsToMany(Field::class, 'user_fields')->withPivot('value');
    }
}

然后,您可以通过以下方式访问用户的值:

$user = User::find($id);
foreach($user->fields as $field) {
    $field->pivot->value;
}