Получение одного значения из отношения belongsToMany в шаблоне блейда

#laravel #eloquent

Вопрос:

Я создал модель с отношениями принадлежности к разным группам. Модель-это Поставщик и связь с местоположением. Итак, в моем шаблоне клинка я обычно делал что-то подобное:

 @foreach ($vendor->locations as $loc)
{{$loc-id}}
@endforeach
 

Однако я хотел бы просто json_encode только значения идентификаторов для каждого из местоположений. Если возможно, я хотел бы сделать это без создания цикла. Итак, я знаю, что могу это сделать:

 {{json_encode($vendor->locations)}}
 

Но, как вы можете догадаться, это выводит данные JSON из всех полей в таблице местоположений.

Я знаю, что могу изменить свои отношения, включив в них только поля идентификаторов, но я не хочу этого делать, потому что хочу использовать отношения в другом месте.

Есть ли способ просто захватить поля идентификаторов, используя что-то вроде:

 {{json_encode($vendor->locations->id)}}
 

Ответ №1:

Вы можете вырвать «идентификатор» и преобразовать его непосредственно в json.

 {{ $vendor->locations->pluck('id')->toJson() }}
 

Для этого требуется, чтобы это $vendor->locations была Коллекция.

Ответ №2:

Вы можете использовать методы Laravel pluck и json:

 {{ $vendor->locations->pluck('id')->toJson() }}
 

Вы можете обратиться к документации для получения дополнительной информации:
https://laravel.com/docs/8.x/collections#method-tojson

Комментарии:

1. классно! Спасибо!