Как получить дополнительные поля из сводной таблицы - laravel

Я создал модель Pivot и таблицу для laravel и добавил дополнительное поле в модель pivot. Но дополнительное поле не отображается при вызове сводных данных.

У меня есть модель клиента и модель тега. И сводная таблица под названием CustomerTag создала пользователя с тегами и добавила дополнительный элемент в сводную таблицу, используя

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

$user->tags()->attach($tag, ['priority' => 1]);

Но когда я называю результат

$use = User::find($id);
dd($user->tags->pivot);

В результате нет поля priority.


person noufalcep    schedule 10.08.2017    source источник


Ответы (2)


Вы должны вызвать функцию withPivot при установлении ассоциации с моделью User:

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

а затем вызвать его при получении результата:

$tags = $user->tags;
foreach ($tags as $tag) {
    $priority = $tag->pivot->priority;
}
person Laerte    schedule 10.08.2017

Во многих тегах отношений есть несколько результатов

пытаться

dd($user->tags[0]->pivot);

или используйте цикл

 foreach ($user->tags as $tag){
    dd($tag->pivot);
 }
person Sharad Kale    schedule 10.08.2017