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`
相关文章
|
4天前
|
资源调度 前端开发 JavaScript
推荐一款可以自动创建视频的前端Ract框架
推荐一款可以自动创建视频的前端Ract框架
|
5月前
|
小程序
laravel8(二)配置自定义路由文件
关于laravel5添加自定义路由文件,请移步《laravel5.8(十五)新增自定义路由文件》 这里大概记录一下laravel8添加自定义路由文件的过程: 持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情 1:首先在routes目录下创建你要添加的自定义路由文件 我这里直接复制的web.php。 2:修改app/Providers目录下RouteServiceProvider.php文件 我这里也是直接复制web部分的代码改的名字 3:修改app/Http目录下Kernel.php文件 我这里还是直接复制web部分的代码改的名
37 1
|
11月前
|
机器学习/深度学习 SQL 分布式计算
PAI-Designer中的EasyRec组件和预制推荐模板介绍
EasyRec是一个配置化的企业级推荐算法框架(https://github.com/alibaba/EasyRec),是阿里云PAI平台自研的适用于推荐广告、搜索场景的深度学习算法库,它实现了多种业界常用的模型,包括DSSM、MIND召回模型,DeepFM、多塔、DIN排序模型,还有ESMM、DBMTL、MMoE等多目标排序模型。 本文介绍EasyRec的PAI-Designer组件和预制模板。
317 1
|
JavaScript 程序员
vue设计一个高扩展性能的路由和实现菜单与路由相结合
我们知道路由一般有两种方案,第一种是基于我们的配置的,另一个就是基于我们自己本身写代码的程序猿自己约定的,约定就是第三方轮子提供的工具暗战其规范生成的路由的配置。
vue设计一个高扩展性能的路由和实现菜单与路由相结合
|
调度 Python
Flask学习与项目实战4:视图高级之蓝图和子域名、类视图
对于大项目,代码都不放在app.py里面,需要分类。 即类似javaspringboot中的分层?每个功能分为一个更小规格的层次。 url_prefix 就是 蓝图的前缀。 和book相关的都在book中,和用户有关的都在user中。
Flask学习与项目实战4:视图高级之蓝图和子域名、类视图
|
测试技术 PHP
Laravel 8 新特性: 动态Blade组件、事件监听器优化、事件测试助手
Laravel 8 通过引入 Laravel Jetstream,模型工厂类,迁移压缩,队列批处理,改善速率限制,队列改进,动态 Blade 组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。
281 0
|
缓存 前端开发 PHP
Laravel基础篇-路由、视图、模型、Blade模板(3)
Laravel基础篇-路由、视图、模型、Blade模板(3)
145 0
|
缓存 前端开发 关系型数据库
Laravel基础篇-路由、视图、模型、Blade模板(1)
Laravel基础篇-路由、视图、模型、Blade模板(1)
117 0
|
前端开发
symfony2框架配置页面
symfony2框架配置页面
102 0
symfony2框架配置页面
|
PHP
【laravel】@11 blade模板
【laravel】@11 blade模板
89 0
【laravel】@11 blade模板