五、视图
一个控制器对应一个目录
1、新建视图
如果要输出变量,注意后缀为 blade.php
resources/views/member/info.blade.php
<h1>member info</h1> name: {{$name}} age: {{$age}}
2、输出视图
路由配置
Route::get('member/info', 'MemberController@info');
控制器方法
class MemberController extends Controller { function info(){ $data = [ 'name' => 'Tom', 'age' => 18 ]; return view('member/info', $data); } }
六、模型
1、新建模型
app/Member.php namespace App; use Illuminate\Database\Eloquent\Model; class Member extends Model { public static function getMember(){ return [ 'name' => 'Tom', 'age' => 18 ]; } }
2、使用模型
namespace App\Http\Controllers; use App\Member; class MemberController extends Controller { function info(){ $data = Member::getMember(); return $data } }
七、数据库
Laravel提供3种操作数据库方式
1、DB facade 原始查找
2、查询构造器query builder
3、Eloquent ORM
八、DB facade 原始查找
1、新建数据表与连接数据库
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名', `age` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '年龄', `sex` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '性别', `created_at` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `updated_at` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表'
2、配置数据连接库参数
.env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=data DB_USERNAME=root DB_PASSWORD=123456
3、使用DB facade实现CURD
如果配置完数据库信息不生效,可以清理缓存重启服务
php artisan cache:clear php artisan config:clear php artisan serve
CURD函数
static array select(string $query, array $bindings = []) static bool insert(string $query, array $bindings = []) static int update(string $query, array $bindings = []) static int delete(string $query, array $bindings = [])
完整示例
namespace App\Http\Controllers; use Illuminate\Support\Facades\DB; class StudentController extends Controller { function list() { # 查询 $list = DB::select('select * from student'); // return $list; // json // var_dump($list); // Array dd($list); // 便于查看的Array } function insert() { // 插入 $bool = DB::insert('insert into student(name, age) values(?, ?)', ['小白', 23] ); var_dump($bool); // bool(true) } function update() { // 更新 $num = DB::update('update student set name = ? where id = ? ', ['大白', 1] ); var_dump($num); // int(1) } function delete() { // 删除 $num = DB::delete('delete from student where id = ?', [2] ); var_dump($num); // int(1) } }
九、查询构造器
Laravel查询构造器query builder
使用PDO参数绑定,SQL注入保护
打印执行的SQL语句
# 安装 $ composer require "eleven26/listen-sql:~1.0.4" --dev # 修改 bootstrap/app.php $app->register(Eleven26\ListenSql\ListenSqlServiceProvider::class); # 启动 $ php artisan listen-sql:start
参考 控制台实时查看 sql
1、新增数据
$data = [ 'name' => '小白', 'age' => 23 ]; // 1、插入 $bool = DB::table('student')->insert($data); // insert into `student` (`name`, `age`) values ("小白", 23) var_dump($bool); // bool(true) // 2、插入并获取自增id $id = DB::table('student')->insertGetId($data); // insert into `student` (`name`, `age`) values ("小白", 23) var_dump($id); // int(2) $list = [ ['name' => '小白', 'age' => 23], ['name' => '大白', 'age' => 24], ]; // 3、插入多条数据 $bool = DB::table('student')->insert($list); // insert into `student` (`age`, `name`) values (23, "小白"), (24, "大白") var_dump($bool); // bool(true)
2、更新数据
// 1、更新, 注意要写where条件 $num = DB::table('student') ->where('id', '=',1) ->update(['name' => '大黄']); // update `student` set `name` = "大黄" where `id` = 1 var_dump($num); // int(1) // 2、自增,默认1 $num = DB::table('student')->increment('age'); // update `student` set `age` = `age` + 1 var_dump($num); // int(8) // 3、自减,默认1 $num = DB::table('student')->decrement('age'); // update `student` set `age` = `age` - 1 var_dump($num); // int(8) // 4、带条件自增 $num = DB::table('student') ->where('id', 1) ->increment('age'); // update `student` set `age` = `age` + 1 where `id` = 1 var_dump($num); // int(1) // 5、自增额外修改其他字段 $num = DB::table('student') ->where('id', 1) ->increment('age', 1, ['name' => '大白']); // update `student` set `age` = `age` + 1, `name` = "大白" where `id` = 1 var_dump($num); // int(1)
3、删除数据
// 1、删除数据 $num = DB::table('student') ->where('id', '=', 1) ->delete(); // delete from `student` where `id` = 1 var_dump($num); // int(1) // 2、清空数据, 危险 谨慎使用 $num = DB::table('student')->truncate(); // truncate `student` var_dump($num); // NULL
4、查询数据
// 1、get获取列表 $list = DB::table('student')->get(); // select * from `student` // 2、first获取一条数据 $data = DB::table('student') ->orderBy('age', 'desc') ->first(); // select * from `student` order by `age` desc limit 1 // 3、where条件 $data = DB::table('student') ->where('age', '>=', 24) ->get(); // select * from `student` where `age` >= 24 // 4、where多条件 $data = DB::table('student') ->whereRaw('id > ? and age > ?', [1, 23]) ->get(); // select * from `student` where id > 1 and age > 23 // 5、返回键值对,第二个字段是key,第一个字段是value // 5.3版本弃用了lists,使用pluck $data = DB::table('student') ->pluck('name', 'id'); // select `name`, `id` from `student` // 6、select 指定字段 $data = DB::table('student') ->select('name', 'age') ->get(); // select `name`, `age` from `student` // 7、chunk分段获取,必须加order排序 DB::table('student') ->orderBy('id') ->chunk(2, function ($list) { echo $list; }); // select * from `student` order by `id` asc limit 2 offset 0 // select * from `student` order by `id` asc limit 2 offset 2 // ...
5、聚合函数
count 计数
max 最大值
min 最小值
avg 平均值
sum 求和
$count = DB::table('student')->count(); // select count(*) as aggregate from `student` var_dump($count); // int(3) $count = DB::table('student')->min('age'); // select min(`age`) as aggregate from `student`