Сейчас getCountPointsAttribute готовит запрос (Query Builder), а не отдает значение. Стоит добавить функцию для вызова этого запроса и получения значения.
Проверять наличие товара по прайсу в базе нужно через SQL запрос. В этом примере тянутся данные из нескольких таблиц БД и потом через php производятся вычисления. Нужно что бы вычисления делала СУБД, а не PHP.
На уровне БД добавь ограничение уникальности на поле Id. Дополнительно на уровне кода перед созданием транзакции делай проверку через sql запрос exist.
Переименуй TestFactory на MyuserFactory. У тебя название модели Myuser а не Test. Посмотри как работает метод factory() Там берется название модели + 'Factory' = название класса, который используется далее.