首先,需要说明的是laravel提供了三种数据操作方式:raw SQL, query builder和Eloquent ORM。在表现形式上注意的是,raw SQL和query builder用的都是DB,不能混为一谈
$users = DB::select('select * from users where active = ?', [1]);
这样的时候就是raw SQL,或者说是原生的SQL语句
$users = DB::table('users')->get();
这个时候就是query builder,其背后基于的是我们熟悉的PDO连接。
至于SQL注入的防护,其实query builder和Eloquent ORM都已经有了,而raw SQL当然就不可能有了,毕竟控制权在你自己手里,你总不能自己攻击自己吧,哈哈
至于说其他人提到的数据库类型,laravel默认支持的是这么几种:MySQL
PostgreSQL
SQLite
SQL Server
可以看到都是关系型的数据库,也就是说raw SQL, query builder和Eloquent ORM这三种操作方式都能胜任这些数据库,不存在说后期换数据库导致不支持。至于说NoSQL数据库,比如redis、MongoDB等,这些一般得通过第三方组件来实现,操作的时候往往是直接操作第三方组件的相应类,比如Redis类。
我想题主所说的DB类,应该指的是query builder,接下来看看Eloquent ORM相对于query builder的优劣势:
优势:E