如何从数据透视表中获取额外的字段 - laravel

nou*_*cep 1 php laravel laravel-5 laravel-eloquent

我为 laravel 创建了一个 Pivot 模型和表,并为 Pivot 模型添加了额外的字段。但是在调用数据透视表时不会显示额外的字段。

我有一个客户模型和标签模型。一个名为 CustomerTag 的数据透视表使用标签创建了一个用户,并使用

$user = User::create([
     'name' => 'User 1'
]);
$tag = 1;

$user->tags()->attach($tag, ['priority' => 1]);
Run Code Online (Sandbox Code Playgroud)

但是当我调用结果时

$use = User::find($id);
dd($user->tags->pivot);
Run Code Online (Sandbox Code Playgroud)

结果没有priority字段。

Lae*_*rte 6

withPivot在 User 模型上建立关联时必须调用函数:

public function tags()
{
    return $this->belongsToMany(Tag::class, 'customer_tag', 'user_id', 'tag_id')
                ->withPivot('priority');
}
Run Code Online (Sandbox Code Playgroud)

然后在得到结果时调用它:

$tags = $user->tags;
foreach ($tags as $tag) {
    $priority = $tag->pivot->priority;
}
Run Code Online (Sandbox Code Playgroud)