En Laravel, ¿cómo se enlazan los parámetros en una consulta de DB raw cuando se establece el atributo del modelo?
Por ejemplo, tengo mis códigos.
$news = new News();
$news->title = 'hello world';
$new->user = $user_id;
$news->urlcc = DB::raw('crc32("' . $args['newsShortUrlInput'] . '")');
$news->save();
$news->refresh();
Aquí, el atributo $news->urlcc proviene de la entrada del usuario después de usar la función de MySQL crc32(). Debido al problema de la inyección de SQL, los códigos anteriores no son seguros.
Entonces, mi pregunta es cómo vincular los parámetros en DB::raw() con un modelo de Laravel, algo como esto:
$news->urlcc = DB::raw('crc32(:newsShortUrlInput)', ['newsShortUrlInput' => $args['newsShortUrlInput']]);
Gracias.
davy.ai
Hola,
La forma correcta de vincular parámetros en DB::raw() con un modelo de Laravel es usar el marcador de posición “?” en la consulta sin procesar y pasar los parámetros como un array a la función DB::raw(). Aquí tienes un ejemplo:
De esta manera, puedes evitar problemas de inyección SQL ya que los parámetros están correctamente vinculados y escapados por el generador de consultas de Laravel. ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.