Görünüşe göre sorun yok.
$type değişkeninin gerçekten dolu olduğundan ve User içinde uygun relation olduğundan emin olun.
Küçük bir bilgi..
$count = $user->{$type}->count();
$limit = $user->addon->{type};
Kod üzerinden inceleyecek olursak;
İlk satırda
$type değişkenine karşılık gelen bir relation User sınıfı içerisinde tanımlı olmalı. Gelmesi muhtemel tüm değerler için bir relation tanımlandıysa ve relation kendi içinde hatasız çalışıyorsa ilk satır sorunsuz çalışmalı. Önemli olan her değerin karşılık bulması.
İkinci satırdaki
$type değişkeninin ise 2 farklı durumu var. İlk durumda
$type değişkeninden gelen verinin relation içindeki porperty veya başka bir relation olduğunu varsayalım. Bu durumda yine
$type değişkeni ile gelen tüm değerlerin addon relation içinde property, accessor veya relation karşılığı olmalı ki sorunsuz çalışsın. İkinci durumda ise
$type değişkeni relation içindeki herhangi bir method ismine karşılık gelebilir. Bu durumda kodu aşağıdaki gibi değiştirmeniz gerekiyor.
$limit = $user->addon->{type}();
Böylelikle
$type içindeki değere uygun method çağrılacaktır.