Level 6
$cars = Car::with(['thumbnail' => function($query){
$query->first();
}])->get();
$img = $cars->thumbnail[0]->value;
// or in your case
$img = $cars->thumbnail->value;
unset($cars['thumbnail']);
$cars->thumbnail = $img;
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
I have an eloquent model for cars called Car.php and media (images) called Media.php and have set the following relationships.
Car.php
public function thumbnail() {
return $this->hasMany('App\Media', 'content_id')->where('media.key', '=', 'thumbnail');
}
Media.php
public function car() {
return $this->belongsTo('App\Car');
}
Now in the query when run
$cars = Car::with('thumbnail')->get();
I get
[
{
"id": 10,
"user_id": 3,
"title": "BMW M3 for sale",
"make_id": 6,
"model_id": 137,
"cubic_capacity": 4000,
"state_id": 4,
"area_id": 121,
"manufacture_year": 2015,
"mileage": 100000,
"transmission_id": 2,
"car_type_id": 2,
"body_type_id": 4,
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"listing_stage_id": 2,
"listing_status_id": 1,
"expired": 0,
"premium": 0,
"price": 400000,
"created_at": "2015-08-05 09:30:23",
"updated_at": "2015-08-05 09:30:23",
"thumbnail": [
{
"id": 41,
"content_type_id": 1,
"content_id": 10,
"key": "thumbnail",
"value": "HJdsJ-1438767025-vorsteiner-gtrs3-1.jpg",
"original": "vorsteiner-gtrs3-1.jpg",
"created_at": "2015-08-05 09:30:25",
"updated_at": "2015-08-05 09:30:25"
},
{
"id": 43,
"content_type_id": 1,
"content_id": 10,
"key": "thumbnail",
"value": "heIzr-1438767025-vorsteiner-gtrs3-2.jpg",
"original": "vorsteiner-gtrs3-2.jpg",
"created_at": "2015-08-05 09:30:25",
"updated_at": "2015-08-05 09:30:25"
},
{
"id": 45,
"content_type_id": 1,
"content_id": 10,
"key": "thumbnail",
"value": "3amBJ-1438767025-vorsteiner-gtrs3-3.jpg",
"original": "vorsteiner-gtrs3-3.jpg",
"created_at": "2015-08-05 09:30:26",
"updated_at": "2015-08-05 09:30:26"
}
]
}
]
I would like to achieve this, where i just get the first thumbnail value instead of the whole collection
[
{
"id": 10,
"user_id": 3,
"title": "BMW M3 for sale",
"make_id": 6,
"model_id": 137,
"cubic_capacity": 4000,
"state_id": 4,
"area_id": 121,
"manufacture_year": 2015,
"mileage": 100000,
"transmission_id": 2,
"car_type_id": 2,
"body_type_id": 4,
"description": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"listing_stage_id": 2,
"listing_status_id": 1,
"expired": 0,
"premium": 0,
"price": 400000,
"created_at": "2015-08-05 09:30:23",
"updated_at": "2015-08-05 09:30:23",
"thumbnail": "HJdsJ-1438767025-vorsteiner-gtrs3-1.jpg"
}
]
How can i achieve the above outcome
Please or to participate in this conversation.