本文实例讲述了laravel框架数据库操作、查询构建器、Eloquent ORM操作。分享给大家供大家参考,具体如下:
1、连接数据库
laravel连接数据库的配置文件位于config/database.php中,在其中connection字段中包含laravel所支持的数据库的配置信息,可以看到其中有主机、端口、数据库、用户名、密码等信息:
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ],
其中都是引入env文件中的默认值,laravel目录最外层有.env文件,在其中配置对应的默认值
DB_HOST=数据库服务器地址
DB_PORT=数据库端口
DB_DATABASE=数据库名
DB_USERNAME=用户名
DB_PASSWORD=密码
2、原生SQL操作数据库
在controller中对数据库进行增删改查的操作
public static function testDB(){ //增加一条数据 DB::insert("insert into student(name,age) values(?,?)",['sandy',19]); //删除一条数据 DB::delete('delete from student where name=?',['sandy']); //修改一条数据 DB::update('update student set sex=? where name=?',['男','tory']); //查询数据 $res=DB::select('select * from student'); //进行数据库通用操作 DB::statement('drop table users'); //打印结果 dd($res); }
其中通过?占位符的方式进行了参数绑定,以此来防止数据库注入攻击,也可以通过命名绑定的方式:
$res = DB::select('select * from users where id = :id', ['id' => 1]);
3、通过查询构建器操作数据库
Laravel将常用的数据库操作封装为接口函数提供给用户调用,从而使数据库操作更为便捷,这些接口就是查询构建器(query builder)。而且通过PDO绑定的方式避免SQL注入攻击,在使用查询构建器时不必考虑过滤用户输入。
3.1、得到结果集
lavarel查询的返回结果集合是StdClass,可以通过$res->name类似访问对象属性的方式访问返回值。如果要查询整个表使用get(),查询表中一条数据使用first(),查询一条数据的某个字段用value(),查询表中所有数据的某个字段用pluck()
//get()返回表中所有数据 $res=DB::table('student')->get(); //first()返回结果集中的第一条数据 $res=DB::table('student')->where('id','1001')->first(); //value()返回一条数据中的指定字段 $res=DB::table('student')->where('id','1003')->value('name'); //pluck()返回结果集中name字段的所有值 $res=DB::table('student')->pluck('name');
当结果集中的数据过多时,可以通过分块的方式返回结果集,chunk函数第一个参数为分块的大小(以每块2个数据的方式返回结果集),第二个参数为回调函数,当其返回false时就停止结果集的返回:
DB::table('student')->chunk(2,function ($res){ foreach ($res as $user){ var_dump($user); if ($user->id >=1003) return false; } });