#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. классно! Спасибо!