【美高梅开户网址】入门笔记,python3开发进阶

1.MVC简介

MVC全名是Model View Controller,是模型-视图-控制器的缩写
Model是应用程序中用来拍卖应用程序数据逻辑的一对
View是应用程序中拍卖数量展现的有些
Controller是应用程序中处理用户交互的局地

laravel 目录结构

|- app

  • http
    • Controllers // 控制器目录
      |- bootstrap // 运行配置文件 的目录
      |- config // 全体的配备文件
      |- database // 数据库迁移 与数量填充文件
      |- public // 入口 和 网站的静态能源
      |- resources // 蕴涵了视图的原始财富文件 视图
      |- srorage // 编译后的模版文件 和任何缓存文件
      |- tests // 单元测试 目录 (单元测试代码)
      |- vendor // 加载的依赖性模块
  • laravel
    • framework // 框架大旨代码 目录

对此一名 rails
服务器开发的初学者,首先须求精晓的正是MVC框架以及rails程序中数据在MVC之间的传递进程。

一、MVC框架和MTV框架

MVC,全名是Model View
Controller,是软件工程中的一种软件架构方式,把软件系统一分配为七个为主部分:

模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期开支低等优点。

MVC的原形就是用一种工作逻辑、数据、界面显示分离的方式协会代码,将工作逻辑聚集到2个部件里面,

在改良和性格化定制界面及用户交互的同时,不供给再度编辑工作逻辑。

美高梅开户网址 1

 

想要更详细的摸底MVC方式? >>
谈谈MVC模式

Django框架的MTV形式本质上与MVC框架没有何界别,也是分成三某个,来下滑各样部分之间的耦合性。

Django框架的差异之处在于它拆分的三有个别为:Model(模型)、Template(模板)和View(视图),相当于M电视机框架。

2.laravel大旨目录文件

美高梅开户网址 2

  • app包蕴了用户的着力代码
  • booststrap包括框架运转和计划加载文件
  • config包括全部的布置文件
  • database包括数据库填充与迁移文件
  • public包括项目入口可静态财富文件
  • resource包蕴视图与原来的财富文件
  • stroage包蕴编写翻译后的模板文件以及依照文件的session和文书缓存、日志和框架文件
  • tests单元测试文件
  • 【美高梅开户网址】入门笔记,python3开发进阶。wendor包涵compose的依赖文件

laravel 路由

一.MVC框架简介

MVC全名是Model View
Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种工作逻辑、数据、界面展现分离的不二法门协会代码,将工作逻辑聚集到1个部件里面,在革新和本性化定制界面及用户交互的同时,不需求再一次编辑工作逻辑。MVC被优异的向上兴起用于映射守旧的输入、处理和出口成效在叁个逻辑的图形化用户界面包车型大巴组织中。

上述描述是百度宏观对MVC框架的简便定义。MVC是3个框架方式,在那之中:

  • Model(模型):处理数据及业务逻辑,平时负责对数据库进行存取操作。
  • View(视图):显示用户界面,处理数据呈现,平日依据模型数据来创建。
  • Controller(控制器):处理用户请求及应用逻辑,常常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

美高梅开户网址,运用MVC框架的次第被分为四个主题部件:模型,视图,控制器。同时,它也强制性的使应用程序的输入,处理和出口分开。

MVC
分层有助于管理复杂的应用程序,同时也简化了分组开发。差别的开发人士可同时支付视图、控制器逻辑和事务逻辑。

Django的MTV模式

       Model(模型):负责作业对象与数据库的目的(O牧马人M)

       Template(模版):负责什么把页面展现给用户

       View(视图):负责作业逻辑,并在合适的时候调用Model和Template

此外,Django还有一个urls分发器,它的功用是将2个个UHavalL的页面请求分发给分歧的view处理,view再调用相应的Model和Template

3.路由

基本路由

// 该路由直接收 get请求
Route::get('basic1', function () {
    return  'hello world!';
});


// 该路由直接收 post请求
Route::post('basic2', function(){
    return  'basic2';
});

二.Rails中的MVC框架

Rails是二个全栈式的MVC框架,换句话说,通过Rails能够兑现MVC形式中的各种层次,并使它们无缝地联合运转起来。

  • ActiveRecord(Model层):是 Rails 的 O奥迪Q5M
    组件,负责与数据库沟通,让大家得以用面向对象的语法操作数据库。
  • ActionView(View层):在Rails中使拍卖View的预制构件,负责展现用户的界面以及controller传来的数量。
  • ActionController(Controller层):首要担负处理 Web
    请求,检索模型数据并按要求将数据传递给视图。控制器是模型和视图的联络桥梁。

Django框架图示

美高梅开户网址 3

 

多请求路由

Route::match(['get', 'post']), 'match', funtion()
{
    return 'match';
});
Route::any(['get', 'post']),  funtion()
{
    return 'any';
});

多请求路由

//  match 接受指定的 请求类型
Route::match(['get','post'], 'multy1',function(){
    return 'multy1';
});

// any 相应所有框架支持的类型
Route::any('multy2', function(){
    return 'multy2';
});

三.Rails中多少在MVC框架中的传递

美高梅开户网址 4

image

数码在MVC框架中的传递如上图所示。上海体育场面的执行步骤为:

  1. 浏览器发送HTTP request请求给rails服务器;
  2. 路由(Routing)依照规则决定送往哪多少个Controller的Action中进行处理;
  3. 顶住处理请求的controller通过action操作model;
  4. model访问数据库并对数码进行操作;
  5. controller将读取到的数据资料渲染给view模板;
  6. 回传最终的HTML页面给浏览器

中间,路由第二依照HTTP
Method方法(GET,POST或是PUT,DELETE等)以及网址来控制发往哪四个controller的action。

APP

二个Django项目能够分为很八个APP,用来隔绝不相同成效模块的代码。

路由参数

Route::get('user/{name}',  funtion($name)
{
    return $id;
})->where('name', '[A-Za-z]+');
Route::get('user/{id}/{name?}',  funtion($id, $name='phyxiao')
{
    return $id. $name;
})->where(['id' => '[0-9]+', 'name'=> '[A-Za-z]+']);

路由参数

// 基础的
//
// ---------
//
// Route::get('user/{id}', function($id){
//  return 'User-id-'.$id;
// });
//
// ---------
//
// 访问地址
// http://laravel.study.com/user/1  
// 输出  User-id-1
//
// 如果访问地址中不带 userID参数值的话则  报错
// 即地址:
// http://laravel.study.com/user


// 可有可无的参数
//
// ---------
//
// Route::get('user/{name?}',function($name = null){
//  return 'User-name-'.$name;
// });
//
// ---------
//
// 访问地址
// http://laravel.study.com/user/test  
// 输出  User-name-test
//
// 如果访问地址中不带 name参数值的话 则改值为空
// 即地址:
// http://laravel.study.com/user
// 输出  User-name-



// 设置参数默认值
// ---------
//
// Route::get('user/{sex?}',function($sex = 'man'){
//  return 'User-sex-'.$sex;
// });
//
// ---------
//
// 访问地址
// http://laravel.study.com/user/woman  
// 输出  User-sex-woman
//
// 如果访问地址中不带 sex参数值的话 则默认值为 man
// 即地址:
// http://laravel.study.com/user
// 输出  User-sex-man
//



// 校验 路由参数

// Route::get('user/{name?}', function($name = 'test'){
//  return 'User-name-'.$name;

// // 后面跟上where 条件 其中第二个值是正则表达式
// })->where('name', '[A-Za-z]+');

// 测试
// http://laravel.study.com/user
//
// 输出
// User-name-test
//
// -------
//
// 测试
// http://laravel.study.com/user/zhangsan
//
// 输出
// User-name-zhangsan
//
// -------
//
// 测试
// http://laravel.study.com/user/123
//
// 报错
// 不符合路由规则



// // 校验 多个字段
// Route::get('user/{id}/{name?}', function($id, $name = 'test'){
//  return 'User-id-'.$id.'-name-'.$name;

// // 如果需要校验多个字段的 那么就用数组传参
// // ID 是数字  name 只能是大小写字母
// })->where(['id'=>'[0-9]+', 'name'=>'[A-Za-z]+']);

四.MVC在Rails中的展示——Scaffold(脚手架)

经过rails的scaffold成效大家得以创制贰个模板,那么些模板上并轨了model,view,controller等职能,在此基础上我们还足以实行充实、删除、修改、查询(CRUD)的操作。

首先我们需求在执行命令:

rails g scaffold myblog

终点中会打字与印刷以下内容:

美高梅开户网址 5

image

应用此命令,rails会直接开立很多文本,在那之中就包含与model,controller,view相关的公文。

  • model层: 在 app/models/中会有多少个文件 myblog.rb,他正是 Model层的
    Class
  • View 层面: 在 app/views/myblogs/中会有多个公文,用于区别的措施展现作品,修改小说等等
  • Controller 层:处理用户的各样请求,在
    app/controllers/中有四个myblogs_controller.rb
    文件,这正是控制层,会处理种种http请求,如增加和删除改查文章。里面有众多的函数和逻辑处理代码。

那正是在rails的scaffold中MVC架构。

命令行创造

python manage.py startapp app01#各种app的名字

路由小名

Route::get('user/home',  ['as' => 'home', funtion()
{
    return route('home');
}]);

路由别名

// 路由别名的主要作用是 在使用 route函数 创建路由地址时,
// 可以使用路由别名创建,别名最好 字符少且能表达路由名称 这样好记也好写。


// // Route::get('user/member-center', ['as'=> 'center', function(){
// Route::get('user/center', ['as'=> 'center', function(){


//  // 使用 route 函数 创建url
//  return route('center');
// }]);

五.总结

Rails是以款卓殊美好的开源框架,它将 MVC
架构完美的展现出来,而且特别的轻量级。学习rails服务器开发,大家须要很好的领悟MVC框架结构,那样对今后的支出会很有帮带。

使用PyCharm创建

详细音信点击这里

在人间弹出的下令窗口输入:

startapp app01

路由群组

Route::group(['prefix' => 'user'], funtion()
{
    Route::get('home', funtion()
   {
    return 'home';
   });
    Route::get('about', funtion()
   {
    return 'about';
   });
});

路由群组

// // prefix 是路由前缀
// Route::group(['prefix' => 'member'], function(){
//  Route::get('user/center', function(){
//      return 'member-user-center';
//  });

//  Route::any('multy2', function(){
//      return 'member-multy2';
//  });
// });

//
//
// 测试
// http://laravel.study.com/user/center
//
// 报错
// 没有找到该路由
// 因为我们这个路由组 加了一个前缀  
// 要访问 群组里的所有路由  都必须加前缀
//
//
// 测试
// http://laravel.study.com/member/user/center
//
// 输出
// member-user-center
//
//
//
// 测试
// http://laravel.study.com/member/multy2
//
// 输出
// member-multy2

路由系统 

Django路由系统 >> 点笔者    后续更新

路由输出视图

Route::get('index',  funtion()
{
    return view('welcome');
});

路由中输出视图

// Route::get('view', function(){

//  // 通过 view 函数 直接返回 渲染后的html
//  return view('welcome');
// });

视图系统

Django视图系统
>> 点小编

4.控制器

控制器

模板

模板(Template)系统 >> 点作者   后续更新

创建控制器

php artisan make:controller UserController
php artisan make:controller UserController --plain

怎么新建3个控制器

在 目录 app/http/Controllers/ 目录下新建 控制器文件

// 声明命名空间
namespace App\Http\Controllers;

// 定义类
class MemberController extends Controller
{

  // 基础
    // public function info(){
    //  return 'Member-info';
    // }


    // 绑定参数
    public function info($id){
        return 'Member-info-id-'.$id;
    }

}

模型

  1. 模型(model)系统O本田CR-VM 的主导介绍
  2. ORAV4M字段和字段参数
  3. O途达M的常用操作
  4. ORM的F查询和Q查询,事务

路由关联控制器

Route::get('index',  'UserController@index');

控制器和路由怎么着举办关联

配置 App\Http\目录下的 routes.php

// 换一个 能接受任何请求的
// Route::any('member/info', ['uses'=>'MemberController@info']);

// // 给绑定控制器的路由起别名
// Route::any('member/info', [
//  'uses'=>'MemberController@info',
//  'as' => 'memberinfo'
// ]);

5.模型

php artisan make:model User

事关控制器后,路由的特性怎么用

// 给绑定控制器的路由起别名
Route::any('member/{id}', [
    'uses'=>'MemberController@info',
    'as' => 'memberinfo'
])->where('id', '[0-9]+');

// 测试
// http://laravel.study.com/member/123123
//
// 输出
//
// Member-info-id-123123
//
//
// 测试
// http://laravel.study.com/member/aaaa
//
// 报错
// 没有找到该路由
//

6.数据库

二种方法:DB facode原始查找询问构造器Eloquent ORM
有关文书 config/database.php.env

视图

询问构造器

$bool = DB::table('user')->insert(['name => phyxiao', 'age' => 18]);
$id = DB::table('user')->insertGetId(['name => phyxiao', 'age' => 18]);
$bool = DB::table('user')->insert([
    ['name => phyxiao', 'age' => 18],
    ['name => aoteman', 'age' => 19],
);
var_dump($bool);

$num= DB::table('user')->where('id', 12)->update(['age' => 30]);
$num= DB::table('user')->increment('age', 3);
$num= DB::table('user')->decrement('age', 3);
$num= DB::table('user')->where('id', 12)->increment('age', 3);
$num= DB::table('user')->where('id', 12)->increment('age', 3, ['name' =>'handsome']);

$num= DB::table('user')->where('id', 12)->delete();
$num= DB::table('user')->where('id', '>=', 12)->delete();
DB::table('user')->truncate();

$users= DB::table('user')->get();
$users= DB::table('user')->where('id', '>=', 12)->get();
$users= DB::table('user')->whereRaw('id >= ? and age > ?', [12, 18])->get();
dd(users);
$user= DB::table('user')->orderBy('id', 'desc')->first();
$names = DB::table('user')->pluck('name');
$names = DB::table('user')->lists('name', 'id');
$users= DB::table('user')->select('id', 'age', 'name')->get();
$users= DB::table('user')->chunk(100, function($user){
dd($user);
if($user->name == 'phyxiao')
return false;
});

$num= DB::table('user')->count();
$max= DB::table('user')->max('age');
$min= DB::table('user')->min('age');
$avg= DB::table('user')->avg('age');
$sum= DB::table('user')->avg('sum');

怎么样新建视图

视图文件存放在 resources\views 目录下
视图的暗中认可后缀名是:.blade.php
文件命名最好和艺术名相同

最好3个控制器 对应一个索引

Eloquent ORM

// 建立模型
// app/user.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    //指定表名
    protected $table = 'user';
    //指定id
    protected $primaryKey= 'id';
    //指定允许批量赋值的字段
    protected $fillable= ['name', 'age'];
    //指定不允许批量赋值的字段
    protected $guarded= [];
    //自动维护时间戳
    public $timestamps = true;

    protected function getDateFormat()
    {
        return time();
    }
    protected function asDateTime($val)
    {
        return val;
    }
}

// ORM操作
// app/Http/Contollers/userController.php
public function orm()
{
    //all
    $students = Student::all();
    //find
    $student = Student::find(12);
    //findOrFail
    $student = Student::findOrFail(12);
    // 结合查询构造器
    $students = Student::get();
    $students = Student::where('id', '>=', '10')->orderBy('age', 'desc')->first();
    $num = Student::count();


    //使用模型新增数据
    $students = new Student();
    $students->name = 'phyxiao';
    $students->age= 18;
    $bool = $student->save();

    $student = Student::find(20);
    echo date('Y-m-d H:i:s', $student->created_at);


    //使用模型的Create方法新增数据
    $students = Student::create(
        ['name' => 'phyxiao', 'age' => 18]
    );
    //firstOrCreate()
    $student = Student::firstOrCreate(
        ['name' => 'phyxiao']
    );
    //firstOrNew()
    $student = Student::firstOrNew(
        ['name' => 'phyxiao']
    );
    $bool= $student->save();


    //使用模型更新数据
    $student = Student::find(20);
    $student->name = 'phyxiao';
    $student->age= 18;
    $bool = $student->save();

    $num = Student::where('id', '>', 20)->update(['age' => 40]);


    //使用模型删除数据
    $student = Student::find(20);
    $bool = $student->delete();
    //使用主见删除数据
    $num= Student::destroy(20);
    $num= Student::destroy([20, 21]);

    $num= Student::where('id', '>', 20)->delete;

}

什么输出视图

// 渲染一个模板文件
// public function info($id){
//  return view('member-info');
// }


// 渲染一个模板  带路径
// public function info($id){
//  return view('Member/info');
// }


// 渲染一个带变量的模板
public function info($id){
  return view('Member/info',[
    'name' => '陈小陌',
    'age' => '21'
  ]);
}

7.Blade模板引擎

<!--展示某个section内容 占位符-->
@yield('content', '内容')
<!--定义视图片段-->
@section(‘header’)
头部
@show

@extends('layouts')
@section(‘header’)
    @parent
    header
@stop
@section(‘content’)
    content
    <!--模板输出php变量-->
    <p>{{$name}}</p>
    <!--模板调用php代码-->
    <p>{{ time() }}</p>
    <p>{{ date('Y-m-d H:i:s', time()) }}</p>

    <p>{{ in_array($name, $arr) ? 'true': 'false' }}</p>
    <p>{{ $name or 'default' }}</p>

    <!--原样输出-->
    <p>@{{$name}}</p>

    {{--模板注释--}}

    {{--引入子视图--}}
    @include('common', ['msg' => 'erro'])

    {{--流控制--}}
    @if ($name == 'phyxiao')
        I'm phyxiao
    @elseif($name == 'handsome')
        I'm handsome
    @else
        none
    @endif

    @unless($name == 'phyxiao')
        ture
    @endunless

    @for($i=0; $i < 10; $i++)
        {{$i}}
    @endfor

    @foreach($students as $student)
        {{$student->name}}
    @endfor

    @forelse($students as $student)
        {{$student->name}}
    @empty
        null
    @endforelse

    <a herf = "{{url('url')}}">text</a>
    <a herf = "{{action('UserController@index')}}">text</a>
    <a herf = "{{route('url')}}">text</a>

@stop

模型

怎么新建立模型型

在APP目录下成立

命名最好和表名称一样同时接纳驼峰命名法

File Name: Member.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Member extends Model
{
    public static function getMember(){
        return 'name is 陈小陌';
    }
}

怎么利用模型

在控制器中映入模型
接下来像普通类一样选拔就好了。。。

<?php
namespace App\Http\Controllers;
use App\Member;
class MemberController extends Controller
{
    // 调用模型中的方法
    public function info(){
        return Member::getMember();
    }
}

数据库操作 DB facade

新建数据表与连接数据库

CREATE TABLE IF NOT EXISTS student(
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '姓名',
`age` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
`sex` TINYINT UNSIGNED NOT NULL DEFAULT 10 COMMENT '性别',
`created_at` INT NOT NULL DEFAULT 0 COMMENT '新增时间',
`updated_at` INT NOT NULL DEFAULT 0 COMMENT '修改时间'
)ENGINE=INNODB DEFAULT CHARSET = UTF8 AUTO_INCREMENT=1001 COMMENT='学生表';

数据库配置文件
config/database.php

打开发现 配置值都以通过 env 函数获取的

env 函数 读取的便是根目录的 .env 文件

配置 或修改

DB_HOST=127.0.0.1
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

使用DB facade 实现curd

<?php

namespace App\Http\Controllers;

// 引入 Facades DB 类
use Illuminate\Support\Facades\DB;
class StudentController extends Controller
{


    /**
     * facade CURD
     * 使用 DB facade 实现CURD
     */
    public function test(){

        // // 查询
        // $students =  DB::select('select * from student');
        // // var_dump($students);
        // dd($students);
        // // array{}
        // //

        // // 插入
        // $id = DB::insert('insert into student(name, age) values(?, ?)', ['陈小陌', '21']);
        // var_dump($id);
        // // bool(true)
        //

        // // 插入
        // $id = DB::insert('insert into student(name, age) values(?, ?)', ['test', '19']);
        // var_dump($id);
        // // // bool(true)
        //


        // // 修改
        // $row = DB::update('update student set age= ? where name=?', ['20', 'test']);
        // var_dump($row);
        // // int(1)
        //
        //

        // // 有条件查询
        // $students =  DB::select('select * from student where id > ?',[1]);
        // dd($students);


        // // 删除
        // $row = DB::delete('delete from student where id > ?', [1]);
        // var_dump($row);
        // // int(1)
    }
}

数据库操作之 – 查询构造器

查询构造器 简介及新增多少

应用查询构造器修改数据

运用查询构造器删除数据

行使查询构造器查询数据

询问构造器的中的聚合函数

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
class StudentController extends Controller
{

    // 测试样例
    // public function test(){
    //  return 'test demo';
    // }
    //


    /**
     * facade CURD
     * 使用 DB facade 实现CURD
     */
    public function test(){

        // // 查询
        // $students =  DB::select('select * from student');
        // // var_dump($students);
        // dd($students);
        // // array{}
        // //

        // // 插入
        // $id = DB::insert('insert into student(name, age) values(?, ?)', ['陈小陌', '21']);
        // var_dump($id);
        // // bool(true)
        //

        // // 插入
        // $id = DB::insert('insert into student(name, age) values(?, ?)', ['test', '19']);
        // var_dump($id);
        // // // bool(true)
        //


        // // 修改
        // $row = DB::update('update student set age= ? where name=?', ['20', 'test']);
        // var_dump($row);
        // // int(1)
        //
        //

        // // 有条件查询
        // $students =  DB::select('select * from student where id > ?',[1]);
        // dd($students);


        // // 删除
        // $row = DB::delete('delete from student where id > ?', [1]);
        // var_dump($row);
        // // int(1)

    }


    // 查询构造器简介
    // Laravel 查询构造器(query builder)
    //
    // 使用pdo 参数绑定 以保护程序免于SQL注入,
    // 因此传入的参数不需要额外转义特殊字符
    //
    // 基本可以满足所有数据库操作,
    // 而且在所有支持的数据库系统上都可以执行
    //




    // 使用查询构造器 新增数据
    //
    public function query(){


        // // 单条数据插入
        // $status  = DB::table('student')->insert(['name'=>'test', 'age'=>18]);
        // var_dump($status);
        // // bool(true)


        // // 新增时 获取新增ID
        //
        // $id  = DB::table('student')->insertGetId(['name'=>'zhangsan', 'age'=>19]);
        // var_dump($id);
        // // int(4)

        // // 批量新增
        //
        // $status  = DB::table('student')->insert([
        //      ['name'=>'name1', 'age'=>18],
        //      ['name'=>'name2', 'age'=>12],
        //      ['name'=>'name3', 'age'=>13]
        //      ]);
        // var_dump($status);
        // // bool(true)
        //

        // dd(DB::select('select * from student'));
    }


    // 使用查询构造器更新数据
    //
    //
    // 更新为指定的内容
    //
    // 自增和自减
    //
    //

    public function query2(){

        // // 更新数据
        // $num = DB::table('student')
        //  ->where('id', 1)
        //  ->update(['age'=>22]);
     //    var_dump($num);

     //    // int(1)
     //    // 更新数据一定要带条件


//      // 字段 自增
//      $num = DB::table('student')->increment('age');
//      var_dump($num);
//      // int(6)


//      // 字段 自增  可定义步长
//      $num = DB::table('student')->increment('age', 3);
//      var_dump($num);
//      // int(6)


//      // 字段 自减
//      $num = DB::table('student')->decrement('age');
//      var_dump($num);
//      // int(6)       

//      // 字段 自减  可定义步长
//      $num = DB::table('student')->decrement('age', 3);
//      var_dump($num);
//      // int(6)


//      // 字段自增自减   加条件
//      $num = DB::table('student')
//              ->where('id', 1)
//              ->decrement('age');
//      var_dump($num);
//      // int(1)



//      // 自增时 同时修改别的字段数据
//      $num = DB::table('student')
//              ->where('id', 1)
//              ->decrement('age', 1, ['name'=>'chenxiaomo']);
//      var_dump($num);
//      // int(1)
    }


    // 使用查询构造器删除数据
    // delete
    // truncate

    public function query3(){
    //      $num = DB::table('student')
    //              ->where('id', 7)
    //              ->delete();
    //      var_dump($num);
    //      // int(1)

    //      $num = DB::table('student')
    //              ->where('age', '<', 18)
    //              ->delete();
    //      var_dump($num);
    //      // int(1)


    //      // 清空表  慎用
    //      DB::table('student')->truncate();

    }


    // 使用查询构造器查询数据

    // Get 获取表的所有数据

    // first  获取一条记录

    // where  条件容器

    // whereRaw  多条件 容器

    // pluck    返回结果集指定的字段  单个

    // lists    返回结果集的指定字段   区别是  可以使用摸个字段作为键

    // select   查询 指定字段

    // chunk  分段的get 分段获取数据



    public function query4(){


        // 获取表的所有数据
//      $data = DB::table('student')->get();
//      dump($data);


        // 获取一条数据 没有条件时 获取的是第一条
//      $data = DB::table('student')->first();
//      dump($data);


//      // 根据 排序 获取一条
//      $data = DB::table('student')
//                  ->orderBy('id', 'desc')
//                  ->first();
//      dump($data);


//      // 加入查询条件
//      $data = DB::table('student')
//          ->where('age', '>=', '18')
//          ->get();
//      dump($data);

//      // 复合条件 查询
//      $data = DB::table('student')
//          ->whereRaw('id >= ? and age > ?', [2, 16])
//          ->get();
//      dump($data);


//      // 获取符合条件的    只只查询一个字段用这个
//      $data = DB::table('student')
//          ->whereRaw('id >= ? and age > ?', [2, 16])
//          ->pluck('name');
//          // ->pluck('name, age');   报错  哭
//          // ->pluck(['name', 'age']);   报错  哭
//      dump($data);


//      // 查询指定字段  并且用指定字段做下标
//      $data = DB::table('student')->lists('name', 'id');
//      dump($data);


//      // 查询指定字段
//      $data = DB::table('student')
//                  ->select(['id','name'])
//                  ->get();
//      dump($data);



        // chunk
        // 如果数据量大  但是要非要都查询出来的情况下 使用 chunk
        // 第一个参数是步长
        // 第二个是回调函数
        // 根据 步长 来约定  每次查询的数据条数  然后循环查询 直到 查询完毕
        $data = DB::table('student')->chunk(2, function($data){
            dump($data);

            // 如果 遇到某个条件 需要终止查询  那么直接返回 false 即可终止

            // 实例
            // 如果  两个人总的年龄 小于40的话 就退出查询   
            // (当然应该没有这么奇葩的需求)
            $ages = array_column($data, 'age');
            if(array_sum($ages) < 40){
                return false;
            }

        });

    }



    // 查询构造器中的聚合函数

    // count

    // max

    // min

    // avg

    // sum


    public function query5(){


//      // 计数       
//      $data = DB::table('student')->count();
//      
//      // 最小
//      $data = DB::table('student')->min('age');
//      
//      // 最大
//      $data = DB::table('student')->max('age');
//      
//      // 平均值
//      $data = DB::table('student')->avg('age');
//      
//      // 合计
//      $data = DB::table('student')->sum('age');

        dump($data);
    }

}

数据库操作 Eloquent OENVISIONM

Eloquent ORM 简介

Eloquent ORM简介

是 laravel自带的
每种数据表都有二个与之相呼应的模型(model)用于和数据表交互

模型的确立

在 APP 目录下创办
文件名和表名一致,且用驼峰命名法表示
假使 类中一直不证明 对应的表名称,那么私下认可是以文件名的复数作为 表名
即:
文件名: student
私下认可表名: students

假诺急需制定表名 就声称1个 $table 属性

// 声明 模型对应的关联表
// 指定表名
protected  $table  = 'student';

暗许主键名为ID 假如不是则要求实行表达

protected $primaryKey = 'id';

最基础的模型 实例

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Student extends Model{

  // 指定表名
  protected  $table  = 'student';

  // 指定主键
  protected $primaryKey = 'id';

}

Eloquent O本田CR-VM 中的查询

all() <br />
find() <br />
findOrfail(); <br />
询问构造器在O安德拉M中的使用<br />

//      // all  获取表的所有数据
//      $students = Student::all();
//      dd($students);
//      // 打印后 发现都是 集合  
//      // 数据内容 在  每个 集合 中的  attributes 字段里
//      

        // 根据主键进行查询
        //
//      $student = Student::find(1);
//      dd($student);


//      // 根据主键进行查找  如果没有找到  则抛出异常
//      $student = Student::findOrFail(1); // 存在的
//      // $student = Student::findOrFail(1001); // 不存在的  抛出异常
//      dd($student);
//      


        // 查询构造器 在 ROM中的使用


//      // 查询所有的表数据
//      $data = Student::get();
//      dump($data);


        // 有条件的查询    查询一条记录
//      $data = Student::where('id', '>', 1)
//              ->orderBy('age', 'desc')
//              ->first();
//      dump($data);


//      // chunk 的使用
//      Student::chunk(2, function($students){
//          dump($students);
//      });
//      

        // 聚合函数的使用
//      $data = Student::count(); // 计数
//      $data = Student::max('age'); // 最大值
//      $data = Student::where('id', '>', 1)->max('age');
//      dump($data);

Eloquent O奥迪Q5M 新增多少, 自定义时间戳 及 批量赋值的选用

  // Eloquent ORM 新增数据, 自定义时间戳 及 批量赋值的使用
    //     通过模型新增数据 (涉及到自定义时间戳)
    //     使用模型的Create方法新增数据(涉及到批量赋值)

    public function orm2(){

        // 使用模型对象新增数据
//  $student = new Student();
//  $student->name = 'zhangsan';
//  $student->age  = 20;
//  $status = $student->save();
//  dump($status);





        // 由于 创建时间  和修改时间的字段名  是 create_at 和 updated_at
        // 这两个是能够被 Laravel 框架 自动识别的  
        // 也就是说能够自动进行维护

        // 开启 时间戳的方法
        // 在模型中  定义 $timestamps 属性  
        // 设置 TRUE 为开启
        // 设置 FALSE 为关闭

        // 我们也可以对 维护时间的两个函数 进行重定义
        // 创建函数为  getDateFormat
        // 读取函数为  asasDateTime($value)
        //    读取 如果默认是时间戳格式的话  会自动转为 2016-11-10 09:49:53 这种格式

        // 查询  自动维护时间戳的部分  
//      $student = Student::find(10);
//      // echo $student->created_at;
//      echo date("Y-m-d H:i:s", $student->created_at);





        // 使用模型的Create方法新增数据
        // 默认 模型里 是不允许批量赋值的
        // 如果要使用批量赋值  需要到模型 重新定义一个 字段

        // 有两个属性来 管理批量赋值 即 $fillable, $guarded
        // $fillable 允许批量赋值的字段列表  用 [] 数组表示值
        // $guarded  不允许批量赋值的字段列表  用 [] 数组表示值

//      $student  = Student::create(
//          ['name'=> 'imooc', 'age'=> 18]
//      );
//      dd($student);






        // firstOrCreate
        // 先按 给出的字段查询数据
        // 如果 找到了 就返回数据
        // 如果 没找到 就新增一条数据 并 返回创建后的实例

        // 存在的
//      $status =  Student::firstOrCreate(
//          ['name'=>'zhangsan']
//      );
//      

        // 不存在的就创建
//      $status =  Student::firstOrCreate(
//          ['name'=> mt_rand(0, 1000)]
//      );


//      dump($status);
//      


        // firstOrNew
        // 以属性查找 数据
        // 如果能查到 数据  就返回数据信息
        // 如果没有找到 就创建实例 但是 不像 firstOrCreate直接插入
        // 如果需要插入到数据库 则 需要手动 调用 save()
        $student = Student::firstOrNew(
            ['name'=>'imoocsss']
        );
        dump($student);
        exit();

        // 保存到数据库
        $status = $student->save();
        dump($status);
    }

应用 Eloquent O本田UR-VM 修改数据

// 使用 Eloquent ORM 修改数据
    public function orm3(){


        // 修改单条数据

        // 查询数据
//      $student = Student::find(13);
//      dump($student);
//      
//      // 修改
//      $student->name = ' update one';
//      dump($student);
//      
//      // 保存
//      $status = $student->save();
//      dump($status);


        // 修改多条数据  返回的是影响行数
        $status = Student::where('id', '>', 10)->update(['age'=> 28]);
        dump($status);

    }

利用 Eloquent O奥德赛M 删除数据

// 使用 Eloquent ORM 删除数据
public function orm4(){

  // 单条删除


  // 通过模型删除
//      $student = Student::find(14);
//      $status = $student->delete();
//      dump($status);


  // 通过主键删除  返回影响行数
//      $status = Student::destroy(13);
//      $status = Student::destroy(11, 12);
//      $status = Student::destroy([11, 12]);



  // 条件 删除
  $status = Student::where('id', '>', 6)->delete();
  dump($status);        
}

Bkade 模板引擎

Blade 模板引擎简介及模板继承的行使

简介

Blade 是 Laravel 自带的模板引擎

模板继承

section
    section 是用来定义一个视图片段的
yield
    yield 是用来指定某个section 的内容
    可以把它想象为占位符
    用子模板来实现它
extends
    继承某个模板
parent
    引入父级的内容
    如果没有引入 则 这块内容会被 直接覆盖
实例
主模板 文件路径 \resources\views\section\layouts.blade.php
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>轻松学会Laravel - @yield('title')</title>
        <style>

            .header {
                width: 1000px;
                height: 150px;
                margin:0 auto;
                background: #f5f5f5;
                border: 1px solid #ddd;
            }

            .main {
                width: 1000px;
                height: 300px;
                margin:0 auto;
                margin-top: 15px;
                clear: both;
            }

            .main .sidebar {
                float: left;
                width: 20%;
                height: inherit;
                background: #f5f5f5;
                border: 1px solid #ddd;
            }

            .main .content {
                float: right;
                width: 75%;
                height: inherit;
                background: #f5f5f5;
                border: 1px solid #ddd;
            }

            .footer {
                width: 1000px;
                height: 150px;
                margin:0 auto;
                margin-top: 15px;
                background: #f5f5f5;
                border: 1px solid #ddd;
            }
        </style>
    </head>
    <body>
        <div class="header">
            @section('header')
            头部
            @show
        </div>

        <div class="main">
            <div class="sidebar">
                @section('sidebar')
                侧边栏
                @show
            </div>

            <div class="content">
                @yield('content', '主要内容区域')
            </div>
        </div>

        <div class="footer">
            @section('footer')
            底部
            @show
        </div>

    </body>
</html>
视图像和文字件设置
<!-- 继承 主模板 -->
@extends('layouts')


<!-- 重新定义头部  -->
@section('header')
    <!-- 继承 父级 -->
    @parent

    header
@stop


<!-- 重新定义 侧边栏  直接覆盖 -->
@section('sidebar')
    sidebar
@stop


<!-- 重新定义 内容片段 -->
@section('content')
    @parent
    content
@stop

基础语法及 include 的采用

模板中输出变量

模板中调用PHP代码

姿首输出

模板中的注释

引入子视图 include的接纳

二级视图像和文字件
<!-- 继承 主模板 -->
@extends('layouts')


<!-- 重新定义头部  -->
@section('header')
    <!-- 继承 父级 -->
    @parent

    header
@stop


<!-- 重新定义 侧边栏  直接覆盖 -->
@section('sidebar')
    sidebar
@stop


<!-- 重新定义 内容片段 -->
@section('content')
    content

    <!-- 模板中调用变量 -->
    <p>{{$name}}</p>


    <!-- 模板中 调用PHP 代码-->
    <p>{{time()}}</p>
    <p>{{date('Y-m-d H:i:s')}}</p>

    <p>{{in_array($name, $arr) ? 'true' : 'false'}}</p>
    <p>{{var_dump($arr)}}</p>

    <p>{{isset($name) ? $name : 'default'}}</p>
    <p>{{ $name or 'default'}}</p>

    <!-- 原样输出 -->
    <p>@{{ $name}}</p>

    <!-- 模板中的注释 -->
    {{-- 模板中的注释 浏览器中看不到的哦--}}



    {{-- 引入子视图--}}
    @include('section.common1', ['message'=>'我是错误信息'])


@stop
控制器代码
    /**
     * 视图学习1
     * @return [type] [description]
     */
    public function section1(){

        $name = 'test';

        $arr = ['test', 'imooc'];

        return view('section/section1', [
            'name'=>$name,
            'arr'=>$arr
        ]);
    }
section/common1(inclued 文件) 代码
<p>我是inclued {{ $message }}</p>

流程序控制制

if

unless

for

foreach

forelse

<!-- 重新定义 内容片段 -->
@section('content')
    content

    <br>

    @if ($name == 'imooc')
        I'm imooc
    @elseif($name == 'test') 
        I'm test
    @else
        who am i?
    @endif


    <br>

    @if (in_array($name, $arr))
        true
    @else 
        false
    @endif


    <br>
    <!-- 如果不相等就输出  -->
    <!-- unless 意为 if的取反 -->
    @unless($name == 'imooc')
        I'm imooc
    @endunless


    <br>
    <!-- for 循环 -->
    @for($i=1;$i<=5;$i++)
        <p>{{$i}}</p>
    @endfor

    <br>    

    <!-- foreach 循环 -->
    @foreach($students as $student)
        <p>{{$student->name}}</p>
    @endforeach


    <!-- forelse -->
    {{-- 如果元素为空 则显示 empty的内容--}}
    @forelse($forelse as $student)
        <p>{{$student->name}}</p>
    @empty
        <p>暂无数据</p>
    @endforelse


@stop

模板中的url

url

是通过路由的名称来生成 U牧马人L

action

是经过制定的控制器和方法 来生产UEscortL

route

是透过路由的别称来生成U昂科拉L

实例

<a href="{{url('urlTest')}}"> url 路由名称生成</a>
<a href="{{action('StudentController@section2')}}">action 指定控制器和方法名生成</a>
<a href="{{route('url')}}">route 路由别名 生成</a>

学科总计

安装Laravel
着力目录文件
路由
MVC
数据库操作
模板引擎

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图