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`
相关文章
|
安全 前端开发 JavaScript
什么是跨域?为什么会产生跨域?怎么解决跨域?
什么是跨域?为什么会产生跨域?怎么解决跨域?
2817 0
|
中间件 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
342 0
|
算法
存储器管理-动态分区分配算法
存储器管理-动态分区分配算法
799 0
|
存储 安全 前端开发
message“: “CSRF token mismatch
message“: “CSRF token mismatch
918 0
|
19天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
32179 117
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
9天前
|
应用服务中间件 API 网络安全
3分钟汉化OpenClaw,使用Docker快速部署启动OpenClaw(Clawdbot)教程
2026年全新推出的OpenClaw汉化版,是基于Claude API开发的智能对话系统本土化优化版本,解决了原版英文界面的使用壁垒,实现了界面、文档、指令的全中文适配。该版本采用Docker容器化部署方案,开箱即用,支持Linux、macOS、Windows全平台运行,适配个人、企业、生产等多种使用场景,同时具备灵活的配置选项和强大的扩展能力。本文将从项目简介、部署前准备、快速部署、详细配置、问题排查、监控维护等方面,提供完整的部署与使用指南,文中包含实操代码命令,确保不同技术水平的用户都能快速落地使用。
4719 4
|
15天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
6813 18
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
14天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
4770 11
|
16天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
5667 21
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手