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
351 0
|
安全 前端开发 JavaScript
什么是跨域?为什么会产生跨域?怎么解决跨域?
什么是跨域?为什么会产生跨域?怎么解决跨域?
3142 0
|
算法
存储器管理-动态分区分配算法
存储器管理-动态分区分配算法
851 0
|
存储 安全 前端开发
message“: “CSRF token mismatch
message“: “CSRF token mismatch
977 0
|
PHP
【laravel】@14 Laravel-debugbar 开发调试利器(调试模式,调试器)
【laravel】@14 Laravel-debugbar 开发调试利器(调试模式,调试器)
342 0
【laravel】@14 Laravel-debugbar 开发调试利器(调试模式,调试器)
|
4天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
3913 8
|
15天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11584 131
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
3天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1399 5
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
15天前
|
人工智能 IDE API
2026年国内 Codex 安装教程和使用教程:GPT-5.4 完整指南
Codex已进化为AI编程智能体,不仅能补全代码,更能理解项目、自动重构、执行任务。本文详解国内安装、GPT-5.4接入、cc-switch中转配置及实战开发流程,助你从零掌握“描述需求→AI实现”的新一代工程范式。(239字)
7878 139

热门文章

最新文章