Ну собственно вот такое сработает:
$collection->total = $collection->count();
НО Я Уверен на 99%, что вам оно не надо на самом деле. Динамическое добавление свойств - это атата и попахивает плохо.
Вам, собственно, зачем? Обязательно нужен экземпляр коллекции? Может массива хватит?
/**
* @var Illuminate\Support\Collection $collection
*/
$arrayCollection = $collection->toArray();
$arrayCollection['total'] = $collection->count();
Если позарез нужен объект с такой структурой - унаследуйте ларавелевский класс
Illuminate\Support\Collection и добавьте туда новое свойство. Это будет самый правильный способ.
use Illuminate\Support\Collection;
class MyCollection extends Collection
{
/**
* @var int
*/
protected $total = 0;
public function __construct($items = [])
{
$this->total = count($items);
parent::__construct($items);
}
public function __get($key)
{
if ('total' === $key) {
return $this->count();
}
parent::__get($key);
}
}
Но опять же, магические методы — это тоже путь в ад.
Короче, вы хотите странного.