Laravel 是一款简洁,优雅的一款框架,可以说是入门TP后的第二款可以选择的框架。

  目录部分:

  • app -> 自己写的代码
  • http -> Controller -> 控制器
  • bootstrap -> 框架自加载的文件
  • config -> 配置文件
  • database -> 关于数据库
  • public -> 静态文件
  • resources -> 视图
  • storage -> 编译静态文件
  • tests -> 用于测试代码

  默认访问的文件是:public->index.php

  路由:

    存放路径:app/http/routes.php

     TP 的访问模式是 用户访问->控制器->Model->视图

     Laravel 的访问模式 用户访问->路由->控制器->Model->视图

    简单的说,Laravel是通过路由来访问各个控制器的

    

  类型:(常用的类型中的其中2种)
    get: Route::get('basic1', function(){

      return 'Hello World';

    });

    post: Route::post('basic2', function(){

      return 'Hello World2';

    });//不能用URL直接访问

  

  多请求路由
    match: Route::match(['get', 'post'], 'multy', function(){

      return 'Hello World3';

    });//既可以用get方式访问,也可以用post方式访问,即是指定方式请求。

    any: Route::any('matrh', function(){

      return 'Hello World4';

    });//响应所有http请求。

  

 路由参数
    get:Route::get('user/{id}', function($id){

      return 'User-id-'.$id;

    });

  默认值
    Route::get('user/{name?}', function($name = 'sean'){

      return 'User-name-'.$name;

    });

  用正则表达式判断
    Route::get('user/{name?}', function($name){

      return 'User-name-'.$name;

    })->where('name', '[A-Za-z]+');//where('要匹配正则的字段', '正则的规则,用[]包含')

  用正则判断多个字段
    Route::get('user/{id}/{name}', function($id, $name){

      return 'User-id-' . $id . ' User-name-' . $name;

    })->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);

  路由别名
    Route::get('user/member-user', ['as' => 'member', function(){

      return 'member-user';

    }]);

  路由群组
    Route::group(['prefix' => 'member', function(){
      Route::get('user/{name}', function($name){
        return 'user-'.$name;
      });

      Rount::get('user/{id}', function($id){
        return 'id ='.$id;
      })
    }]);//访问的时候可以通过member前缀,访问路由群组里面的路由 例如:
  /* 原本是http://localhost/Laravel/laravel52/public/user/name
    加上前缀后变成http://localhost/Laravel/laravel52/public/menber/user/name
    同样可以访问
   */

  路由中输出视图
    Route::get('view', function(){
      return view('welcome');
    });

  总结:项目中的代码不能写在这里。路由只是用来接受请求,并转化给控制器中的方法进行处理。

  

  控制器
    路径:app/HttpControllers

    新建一个控制器
      1.和TP一样 MemberController.php
      2.namespace App\Http\Controllers;
      3.写个类 
    eg:class MemberController extends Controller
      {
        public function info()
        {
          return 'member-info';
        }
      }

  路由和控制器关联
    Route::get('member/info', 'MemberController@info');//Route::get('控制器名/控制器方法名', '控制器名Controller @ 控制器方法');

  第二种方式:
    Route::get('member/info', ['uses' => 'MemberController@info']);

  控制器带参数
    Route::any('member/{id}', ['uses' => 'MemberController@info']);
  在控制器方法里面:
    public function info($id)
    {
      return $id;
    }

  当要限制参数类型
    Route::any('member/{id}', ['uses' => 'MemberController@info'])->where('id', '[0-9]+');

  视图
    路径:resources/views

    输出视图
      public function info()
      {
        return view('目录名/文件名');
      }

   前提是在视图层建好这个文件
    命名规则: 文件名.blade.php;

    一般一个控制器对应一个目录,如果控制器是MemberController.php 则建立一个member目录,控制器里要的视图存放在这个目录里面

    以上总结:和TP一样

    在控制器中带变量
      public function inin()
      {
        return view('menber', [
          'name'=>'陈77',
          'age'=>'老不死'
        ]);
      }
    模版中输出变量
      {{$name}} {{$age}}

    模型
      路径:app

      新建一个模型:
        namespace App;

        use Illuminate\Database\Eloquent\Model;

        class Member extends Model
        {
          public static function getMember()
          {
            return 'sean';
          }
        }

    在控制器中使用
      1.在开头位置
          use App/模型名;

      2.因为上面的模型是用静态方法定义
          所以调用时候:模型名::模型里面的方法名();

    操作数据库

      三种方式
        DB facade(原始查找)
        查询构造器
          Eloquent ORM
        路径:
          config/database.php
          'prefix' => '表前缀'(没有可忽略)
          对应.env文件
        修改数据库配置
          vendor/.env
            DB_CONNECTION=mysql
            DB_HOST=127.0.0.1 //服务器地址
            DB_PORT=3306//端口号
            DB_DATABASE=homestead//数据库名
            DB_USERNAME=homestead//用户名
            DB_PASSWORD=secret//密码

    DB:原生语句查询
      $res = DB::select('select * from goods'); dd($res);(相当于TP中的dump());
      增加
      $res = DB::insert('insert into goods(name, age) values(?, ?)',['sean', 18]);
      更改
      $res = DB::update('update goods set age = ? where name = ?', ['17', 'sean']);
      删除
      $res = DB::delete('delete from goods where id = ?', ['1001']);

  查询构造器(重点)用内置的方法对数据库进行增删改查

  

    简介:
      提供方便,流畅的接口,用来建立以及执行数据库操作
      使用PDO参数绑定,以保护应用程序免于SQL注入因此传入的是数据不需要另外转义特殊字符串
      基本可以满足所有数据库操作。

      要访问这个数据的方法,需要增加一条路由,输入访问的 URL 调用这个路由访问到控制器里面的方法。

  增加
    DB::table('goods')->insert([
      ['name' => 'name1', 'age' => 18],
      ['name' => 'name2', 'age' => 12]
    ]);

    DB::table('goods')->insertGetId([
      ['name' => 'name1', 'age' => 18],
      ['name' => 'name2', 'age' => 12]
    ]);//获取到最后插入的ID

    修改
    DB::table('goods')->where('id', 2)->update(['age' => 13]);//把goods表的id=2的年龄改成age=13;
  自增
    DB::table('goods')->where('id', 2)->increment('age', 3);//把id=2的年龄自增3岁,不加数据默认自增一岁
  自减
    DB::table('goods')->where('id', 3)->decrement('age', 3)//把id=3的年龄自减3岁,不加数据默认自增一岁
  自增/自减时候更改其他数据
    DB::table('goods')->where('id', 2)->increment('age', 3, ['name', 'ii']);//自增的同时把name改成ii
  删除
    DB::table('goods')->where('id', '>=', 3)->delete();//删除id>=3的数据
    DB::table('goods')->truncate();//清空数据库,谨慎使用

  查询
    get方法: $res = DB::table('goods')->get();//获取表的所有数据
      dd($res);//Laravel的打印方式

    first顺序方法: $res = DB::table('goods')->first();//顺序获取表的一条数据

    first倒序方法: $res = DB::table('goods')->orderBy('id', 'desc')->first();//倒叙获取表的一条数据

    where方法: $res = DB::table('goods')->where('id', '<=', 1001)->get();//按条件获取表的数据

    where多个条件方法: $res = DB::table('goods')->where('id >= ? and age >= ?', ['1001', '18'])->get();//按多个条件获取表的数据

    pluck返回某个字段:$name = DB::table('goods')->pluck('name');//只返回name这个字段的值

    lists返回某个字段:$name = DB::table('goods')->lists('name', 'id');//只返回name这个字段的值,同时可以指定某个下标

    select指定查询的字段:$name = DB::table('goods')->select('name', 'id')->get();//只查询name, id 字段的值

    chunk限定每次返回几条:$name = DB::table('goods')->chunk(2, function($goods){
      dd($goods);
      return false;//加上这个条件,就只查询一次,
    });//每次只查询两条,查完为止

laravel学习一的更多相关文章

  1. Laravel学习笔记(三)--在CentOS上配置Laravel

    在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚.     今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下.     1)系统 ...

  2. Laravel学习笔记之Session源码解析(上)

    说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...

  3. 《PHP框架Laravel学习》系列分享专栏

    <PHP框架Laravel学习>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201735.html 文章 Laravel教程:l ...

  4. Laravel 学习 .env文件 getenv 获得环境变量的值

    Laravel 学习 .env文件 getenv 获得环境变量的值  我们还需要对应用的 .env 文件进行设置,为应用指定数据库名称 sample. .env . . . DB_DATABASE=s ...

  5. laravel学习之旅

    前言:之前写了二篇YII2.0的基本mvc操作,所以,打算laravel也来这一下 *安装现在一般都用composer安装,这里就不讲述了* 一.熟悉laravel (1)如果看到下面这个页面,就说明 ...

  6. laravel学习:主从读写分离配置的实现

    本篇文章给大家带来的内容是关于laravel学习:主从读写分离配置的实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在DB的连接工厂中找到以下代码.../vendor/larav ...

  7. Laravel学习笔记之PHP反射(Reflection) (上)

    Laravel学习笔记之PHP反射(Reflection) (上) laravel php reflect 2.1k 次阅读  ·  读完需要 80 分钟 3 说明:Laravel中经常使用PHP的反 ...

  8. Laravel学习笔记(一)安装配置开发环境

    摘要 Laravel的目标是给开发者创造一个愉快的开发过程,并且不牺牲应用的功能性.快乐的开发者才能创造最棒的代码!为了这个目的,开发者博取众框架之长处集中到Laravel中,这些框架甚至是基于Rub ...

  9. Laravel 学习笔记 —— 神奇的服务容器 [转]

    容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器.一个容器能够装什么,全部取决于你对该容器的定义.当然,有这样一种容器,它存放的不是文本.数值,而是对象.对象的描述(类.接口)或 ...

  10. 慕客网laravel学习笔记

    session中set方法使用 Session::set('user.username.age','18')嵌套使用得出$user = ['username'=>['age'=>18]]; ...

随机推荐

  1. 易碎的鸟蛋 概率DP

    1007: 易碎的鸟蛋 时间限制: 1 Sec  内存限制: 128 MB提交: 396  解决: 80[提交][状态][讨论版] 题目描述 你们知道吗?西电的跳楼塔上面有一个鸟巢.某SXBK的教授对 ...

  2. codevs——1019 集合论与图论

    1019 集合论与图论  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 集合论与图论对于小松来说 ...

  3. redhat 6 配置 yum 源

    1.删除redhat原有的yum rpm -aq|grep yum|xargs rpm -e --nodeps 2.下载yum安装文件 注意,如果下载时找不到文件,就登录到:http://mirror ...

  4. Check ini style config tool

    INI style config is like below [section] # comment key = value Sometimes we want to check the config ...

  5. CCNA一些要点

    考试范围:     TK640-801(Cisco Certified Network Associate 640-801 ICND Course Notes).     信息单位:     1Byt ...

  6. ubuntu下vim及man帮助文档的汉化

    vim是一个功能超级强大的编辑器,当然我们也可将它配置超强的IDE.这类教程网上非常多,我就不再此赘述了. 我们在使用中对不熟悉的命令,不熟悉的插件的使用方法常常须要查看文档,全英文环境确实看着人头都 ...

  7. HTTP请求库——axios源码阅读与分析

    概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...

  8. .NET Core/.NET之Stream简介 Rx.NET 简介

    .NET Core/.NET之Stream简介   之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core ...

  9. Java中的Nested Classes和Inner Classes

    Java中的Nested Classes和Inner Classes Java有嵌套类(Nested Classes)和内部类(Inner Classes)的概念. 嵌套类(Nested Classe ...

  10. Python数据导入

    1.csv格式数据导入 import pandas as pd w=pd.read.csv("数据地址") w.describe() w.sort_values(by=" ...