$dto->email->value(), 'password_hash' => $dto->passwordHash, ]); return new User( id: $record->id, email: new EmailAddress($record->email), passwordHash: $record->password_hash, ); } public function findByEmail(EmailAddress $email): ?User { $record = UserModel::where('email', $email->value())->first(); if ($record === null) { return null; } return new User( id: $record->id, email: new EmailAddress($record->email), passwordHash: $record->password_hash, ); } public function find(int $id): ?User { $record = UserModel::find($id); if ($record === null) { return null; } return new User( id: $record->id, email: new EmailAddress($record->email), passwordHash: $record->password_hash, ); } }