Если я правильно понял проблему, то: в пятой строке контроллера Вы к массиву добавляете результат выполнения запроса, а это массив объектов, а не отдельный объект даже если запрос возвращает только одну строку или не возвращает вообще ничего.
Т.е. я бы заменил
$collection[] = Collection::where('title', '=', $key->attributes['collection_id']) -> get();
на
$collection[] = Collection::where('title', '=', $key->attributes['collection_id']) -> get()[0];
А вообще, узнайте, как в вашей ORM делать SQL JOIN. Задача решается одним запросом.