Эти два примера дают один и тот же результат, хотя и с разными типами данных результата.
Использование необработанных запросов действительно может быть вектором атаки, если вы не экранируете значения, используемые в запросе.(особенно те, которые поступают из пользовательского ввода).
Однако это можно очень легко уменьшить, используя привязки, передаваемые в качестве второго параметра любого необработанного метода запроса, как показано в той же документации (selectRaw
принимает второй параметр как массив привязок, а также другие необработанные методы из Query Builder, такие как whereRaw
и т. Д.).На самом деле в начале страницы docs , на которую вы ссылались, во втором абзаце также говорится следующее:
Конструктор запросов Laravel использует привязку параметров PDO для защиты вашего приложения от атак внедрения SQL,Нет необходимости чистить строки, передаваемые как привязки.
Поэтому, если вы будете осторожны и убедитесь, что все параметры передаются как привязки, а не объединяются в виде простых значений в необработанной строке запроса, вы должны быть в безопасности.