В проекте у меня есть одна таблица:
item_attributes(
id,
property varchar, // year for example
type varchar,
value varchar, // 1999 for example
)
В Laravel я хочу объединить свойство и значение, поэтому, когда я выбираю элемент, ответ должен быть
year => 1999
Когда я выбираю элемент с атрибутами, ответ таков:

Item::with("attributes")->get()
Если вы используете Laravel Eloquent Model, то это определенно поможет вам. laravel.com/docs/5.7/красноречиво-мутаторы
@Mozammil Я обновил свой вопрос
Спасибо. Я добавил свой ответ.






Чтобы иметь возможность вернуть пользовательский json data при возврате одной или нескольких моделей того же типа, вы можете использовать Resources, который является еще одним уровнем, отвечающим за преобразование данных, которые вы хотите вернуть из вашего приложения, поскольку вопрос не является конкретным, я даст вам ссылку, где вы можете узнать больше об этом: https://laravel.com/docs/5.7/eloquent-resources#генерирующие-ресурсы
В вашей модели вы должны создать один такой атрибут. а затем всякий раз, когда вы хотите получить ответ на это значение свойства, используйте этот атрибут.
public function getPropertyValueAttribute()
{
return "{$this->property} => {$this->value}";
}
Думаю pluck() должен работать.
Item::with("attributes")
->get()
->pluck('attributes.value', 'attributes.property');
В классе модели элемента определите такой метод, как:
// Assumed that an item "hasMany" attributes:
function getItemAttributesAttribute() {
$attr = [];
foreach($this->attributes as $attribute) {
$attr[$attribute->property] = $attribute->value;
}
return $attr;
}
И используйте его в своем контроллере как:
dd(Item::get()->first()->item_attributes);
// or
dd(Item::find(1)->item_attributes);
Если вы хотите получить несколько элементов с атрибутами:
$list = [];
foreach(Item::get() as $item) {
$list[$item->id] = $item->item_attributes;
}
dd($list);
Не уверен, что вы имеете в виду. Не могли бы вы показать нам код?