laravel学习笔记(二)
路由
HTTP方法:支持http1.1中所有类型传参方式,get,post,put,delete,options,patch
Route::get($url,$callback);
路由参数:
Route::get('user/{id}',function($id){return 'userid:'.$id});
路由分组:
Route::group(['prefix'=>'admin'],function(){
Route::get('users',function(){
//"admin/users"
})
});
绑定模型:
//默认对应关系:user=>表users ,主键=>id
Route::get('api/users/{user}',function(App\user $user){ return $user->email; })
创建控制器
php artisan make:controller PostController
相关:
php artisan
php artisan help make:controller
创建路由(文章模块)
routes/web.php
//文章列表页
Route::get('/posts','\App\Http\Controllers\PostController@index');
//文章创建
Route::get('/posts/create','\App\Http\Controllers\PostController@create');
Route::post('/posts','\App\Http\Controllers\PostController@store');
//文章详情页
Route::get('/posts/{post}','\App\Http\Controllers\PostController@show');
//文章编辑
Route::get('/posts/{post}/edit','\App\Http\Controllers\PostController@edit');
Route::put('/posts/{post}','\App\Http\Controllers\PostController@update');
//文章删除
Route::get('/posts/delete','\App\Http\Controllers\PostController@delete');
创建控制器具体方法
位置:app/Http/Controllers/PostController.php
public function index(){
return view("post/index"); //模版渲染
}
public function show(){
return view("post/show");
}
public function delete(Post $post){
$post->delete();
return(redirect('posts/')); //页面跳转
}
创建模板
在 resources/views/下创建post文件夹,在其中创建对应的 *.blade.php ,eg: resources/views/post/create.blade.php
模版语法
{{}}
@if @endif
@foreach @endforeach
注:参数传递 compact
继承模型
extends 引入公共模板 @extends('layout.main')
section 进行填充 @section("content") @endsection
yield 定义填充 @yield("content")
引入视图 include(模型再细化) @include('layout.footer')
数据表
migrate ,对所有的表的操作都以日志来记录,便于协同开发
表名(名词+s)
外键(表名_键名)
时间(created_at,updated_at)
数据库迁移
创建posts表:
php artisan make:migration create_posts_table
自动创建 database/migrations/2018_09_29_072923_create_posts_table.php
Q: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
A: app/Providers/AppServiceProvider.php boot()
use Illuminate\Support\Facades\Schema;
Schema::c(250);
自动检查sqllog并执行:
php artisan migrate
文章模块模型
ORM Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。
每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。
创建模型:
php artisan make:model Post
生成: app/Post.php //对应数据表posts,可通过 private $table = 'newtableName'; 来修改默认表名
about: php artisan help make:model
thinker 常驻进程
php artisan tinker
add:
$post = new \App\Post();
$post->title="this is post';
$post->content="this is content';
$post->save();
select:
$post->find(); // \App\Post::find(2); 仅支持主键查找
\App:Post::where('title','zhangsan')->first();
\App:Post::where('title','zhangsan')->get();
modify
$post = \App\Post::find();
$post->title = 'hahazhangsan';
$post->save();
delete:
$post->delete();
修改时区(默认英国时区)
config/app.php
'timezone' => 'Asia/Shanghai', //UTC
数据填充thinker
参考:https://github.com/fzaninotto/Faker
创建工厂,目录:database/factories/ModelFactory.php
$factory->define(App\Post::class,function(Faker\Generator $faker) {
return [
'title'=>$faker->words($nb = , $asText = true),
'content'=>$faker->text($maxNbChars = )
];
});
在tinker中(新创建的工厂记得重启tinker后才可生效)
php artisan tinker
factory(App\Post::class,)->make(); //仅显示,未真正添加至库中
factory(App\Post::class,)->create(); //创建并写入库
分页
参考:https://laravel-china.org/docs/laravel/5.4/pagination/1260
//$lists = Post::orderBy('created_at','desc')->get();
$lists = Post::orderBy('created_at','desc')->paginate();
// $lists = [['title'=>'nana'],['title'=>'nana2'],['title'=>'nana'],['title'=>'nana2'],['title'=>'nana'],['title'=>'nana2']];
{{$posts->links()}}
辅助函数
参考:https://laravel-china.org/docs/laravel/5.4/helpers/1252 ,eg:str_limit()
栗子:html原生输出:{!! str_limit($post->content,30,'...') !!}
laravel学习笔记(二)的更多相关文章
- laravel学习笔记二
代码编写提示工具
- Laravel学习笔记之Session源码解析(上)
说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
随机推荐
- 一步一步学Silverlight 2系列(8):使用样式封装控件观感
述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- ping 中的“TTL"是什么意思
简单来说就是表示一个数据包在网络中可以跳跃的结点数据,当该数据为零时本数据包将被抛弃 详细解释看以下引用: TTL (although named as "time" to liv ...
- Java变量和常量声明
一.变量 1.变量的定义 变量是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),Java中每个变量必须先声明,后使用 该区域的数据可以在同一类型范围内 ...
- MySQL中的RAND()函数使用详解
转自:https://www.jb51.net/article/66697.htm MySQL RAND()函数调用可以在0和1之间产生一个随机数: ? 1 2 3 4 5 6 7 mysql> ...
- ADC 与实际电压值的关系
1.首先确定ADC用几位表示,最大数值是多少.比如一个8位的ADC,最大值是0xFF,就是255. 2.然后确定最大值时对应的参考电压值.一般而言最大值对应3.3V.这个你需要看这个芯片ADC模块的说 ...
- 005--linux基础一作业
1.最小化安装centos7操作系统 2.新增硬盘分两个分区,两个分区的文件系统依次为ext4和xfs 3.将两个文件系统分别挂在到/mnt和/opt目录 4.新增普通用户egon并采用无需重复确认的 ...
- 任务46:Identity MVC:登录逻辑实现
任务46:Identity MVC:登录逻辑实现 实现登陆的方法 退出方法 _layout里面增加如下的代码: Login.cshtml 运行代码测试: 这个地方的单词之前拼错了.这里进行修正 输入账 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时7
课时7 线性分类器损失函数与最优化(下) 我们为什么要最大化对数概率而非直接最大化概率? 你在做逻辑斯蒂回归时,如果你只是想要最大化概率,那你使用log是无意义的.因为log函数是单调函数,最大化概率 ...
- typeof操作符返回一个字符串,表示未经计算的操作数的类型。
typeof操作符返回一个字符串,表示未经计算的操作数的类型. 语法 typeof运算符后跟操作数: typeof operand or typeof (operand) 参数 operand 是 ...
- hdoj2952【DFS联通块】
我觉得还是这种不带回溯的直接搜到底的好玩啊!!!但是要注意边界,记得以前四周要空出来的一道题目,被坑了很久,还是wa到比赛结束!!!这道还是基础题 类似的基础题:POJ1562 hdoj1016 po ...