Вся работа с БД должна производиться в репозиториях.
Репозиторий работает с сущностями, так что, в случае использования active record ORM, из ar модели нужно будет создавать сущность и возвращать ее из репозитория. Не даем подключению к БД "гулять" по проекту. Entity это обычный popo в котором нет какой-либо логики, а есть лишь набор полей, геттеры, ну и методы для обновления состояния.
Например:
class EloquentUserRepository implements UserRepository
{
public function findBySomething(string $something): ?UserEntity
{
$user = User::where('something', $something)->first();
if ($user !== null) {
return new UserEntity($user->id, $user->something);
}
return null;
}
}
Может в строну доктрина копать?
Верное решение. Лучше откажитесь от eloquent и возьмите doctrine, если проект требует серьезной ORM.