laravel学习一
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学习一的更多相关文章
- Laravel学习笔记(三)--在CentOS上配置Laravel
在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚. 今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下. 1)系统 ...
- Laravel学习笔记之Session源码解析(上)
说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...
- 《PHP框架Laravel学习》系列分享专栏
<PHP框架Laravel学习>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201735.html 文章 Laravel教程:l ...
- Laravel 学习 .env文件 getenv 获得环境变量的值
Laravel 学习 .env文件 getenv 获得环境变量的值 我们还需要对应用的 .env 文件进行设置,为应用指定数据库名称 sample. .env . . . DB_DATABASE=s ...
- laravel学习之旅
前言:之前写了二篇YII2.0的基本mvc操作,所以,打算laravel也来这一下 *安装现在一般都用composer安装,这里就不讲述了* 一.熟悉laravel (1)如果看到下面这个页面,就说明 ...
- laravel学习:主从读写分离配置的实现
本篇文章给大家带来的内容是关于laravel学习:主从读写分离配置的实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在DB的连接工厂中找到以下代码.../vendor/larav ...
- Laravel学习笔记之PHP反射(Reflection) (上)
Laravel学习笔记之PHP反射(Reflection) (上) laravel php reflect 2.1k 次阅读 · 读完需要 80 分钟 3 说明:Laravel中经常使用PHP的反 ...
- Laravel学习笔记(一)安装配置开发环境
摘要 Laravel的目标是给开发者创造一个愉快的开发过程,并且不牺牲应用的功能性.快乐的开发者才能创造最棒的代码!为了这个目的,开发者博取众框架之长处集中到Laravel中,这些框架甚至是基于Rub ...
- Laravel 学习笔记 —— 神奇的服务容器 [转]
容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器.一个容器能够装什么,全部取决于你对该容器的定义.当然,有这样一种容器,它存放的不是文本.数值,而是对象.对象的描述(类.接口)或 ...
- 慕客网laravel学习笔记
session中set方法使用 Session::set('user.username.age','18')嵌套使用得出$user = ['username'=>['age'=>18]]; ...
随机推荐
- Apple & APPID & iOS & React Native
Apple & APPID & iOS & React Native 在没有 苹果开发者账号证书 APPID, ios 是否支持导出 app https://developer ...
- 【最大流】Escape
https://www.bnuoj.com/v3/contest_show.php?cid=9149#problem/F [题意] 给定n个人和m个星球,每个人可以匹配某些星球,每个星球有一定的容量限 ...
- codeforces365A
#include<stdio.h> #include<string.h>//刚做codeforces上的比赛题我都没看懂啊啊啊啊啊啊 int main() { int n,m, ...
- [ C语言版 ] 数独计算器 [ 搜索剪枝法 ]
[原创]转载请注明出处. [浙江大学 程序设计专题] 使用方法:按提示输入方式为9*9的矩阵,0表示未知数. 为解决这一问题,我们也尝试了两种方法,准确的说,是第一种方法太慢了,我们对它进行了优化. ...
- csu - 1536: Bit String Reordering (模拟)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1536 不知道为何怎么写都写不对. 这题可以模拟. 虽然题目保证一定可以从原串变成目标串,但是不一定 ...
- Ubuntu 16.04出现Can't open /etc/rc.d/init.d/functions的问题解决
/etc/rc.d/init.d/functions是CentOS的位置,Ubuntu对应:/lib/lsb/init-functions 参考: https://unix.stackexchange ...
- Mybatis中的ognl表达式。及myabtis where标签/if test标签/trim标签
1.mybatis默认支持使用ognl表达式来生成动态sql语句 MyBatis中可以使用OGNL的地方有两处: 动态SQL表达式中 ${param}参数中 上面这两处地方在MyBatis中处理的时候 ...
- kkpager的改进,Ajax数据变化但是页码不变的问题
原文:http://blog.csdn.net/xiaojian1018/article/details/45564051 kkpager 是一个简单分页展示插件,需要依赖jquery.下载地址:ht ...
- SAS学习笔记 - 基本原理与概念
1.赋值符号 由一个尖括号和一个符号组成,可以从左到右也可以从右到左,即“->”或者“<-”. 赋值号也可以使用等号“=”. 如果对象已经存在,那么原先的值会被覆盖.除了可以赋一个数值,还 ...
- android PercentRelativeLayout 支持百分比来设置控件的宽高
Android 最终官方支持按百分比来设置控件的宽高了. 我们先来看看效果: 看一下布局: PercentRelativeLayout <android.support.percen ...