I usually just do it like you show. You could also create a custom accessor in the user model, like getMentionNameAttribute() where it just returns '@' . $this->username;
I wouldn't do that to username (getUsernameAttribute()). Then everytime you call $user->username it will add the @. I'm sure you want it added sometimes, but not all of the time. That's why I put it in mentionName, so you could still use username.
Is username an actual field in the database for a user? I only used it because you used it in your original post.