Laravel基础篇-路由、视图、模型、Blade模板(2)

简介: Laravel基础篇-路由、视图、模型、Blade模板(2)

五、视图

一个控制器对应一个目录


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`
相关文章
|
中间件 PHP
POST 419 ; message: “CSRF token mismatch.“, exception: “Symfony\Component\HttpKernel\Exception\HttpE
POST 419 ; message: “CSRF token mismatch.“, exception: “Symfony\Component\HttpKernel\Exception\HttpE
394 0
|
安全 前端开发 JavaScript
什么是跨域?为什么会产生跨域?怎么解决跨域?
什么是跨域?为什么会产生跨域?怎么解决跨域?
3564 0
|
算法
存储器管理-动态分区分配算法
存储器管理-动态分区分配算法
954 0
|
存储 安全 前端开发
message“: “CSRF token mismatch
message“: “CSRF token mismatch
1090 0
|
PHP
【laravel】@14 Laravel-debugbar 开发调试利器(调试模式,调试器)
【laravel】@14 Laravel-debugbar 开发调试利器(调试模式,调试器)
404 0
【laravel】@14 Laravel-debugbar 开发调试利器(调试模式,调试器)
|
22天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
7天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。
|
13天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
495 127