Они почти одинаковы, но selectRaw
допускает привязки. глядя на исходный код:
// Line 232, /Illuminate/Database/Query/Builder.php
public function selectRaw($expression, array $bindings = [])
{
$this->addSelect(new Expression($expression));
if ($bindings) {
$this->addBinding($bindings, 'select');
}
return $this;
}
// Line 835 /Illuminate/Database/Connection.php
public function raw($value)
{
return new Expression($value);
}
На основании сигнатур метода
// You can do bindings with selectRaw()
->selectRaw('complex_thing(column_name, ?)', [123]);
// but there's not a way to do bindings with DB::raw()
->select(DB::raw('no_bindings_allowed('fixed', 'values', 42)');
Вы можете вручную вставить значение в строку DB::raw()
выше, но вам необходимо проверить, чтобы убедиться, что внедрение кода невозможно. Надеюсь, вы понимаете.