• 路由

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学习笔记(二)的更多相关文章

  1. laravel学习笔记二

    代码编写提示工具

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

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

  3. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  4. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  5. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  6. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  7. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  8. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  9. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

随机推荐

  1. MYSQL初级学习笔记五:连接查询!(视频序号:初级_37-41)

    知识点七:连接查询(37-41) 什么是连接查询: 连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据.连接查询是同时查询两个或两个以上的表时使用的.当不同的表中存在相同意义的字段时 ...

  2. uestc 250 windy数(数位dp)

    题意:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 思路:数位dp #include<iostream ...

  3. Android 如何进入充电模式

    /************************************************************************* * Android 如何进入充电模式 * 说明: ...

  4. BZOJ_4698_Sdoi2008 Sandy的卡片_后缀数组+单调队列+双指针

    BZOJ_4698_Sdoi2008 Sandy的卡片_后缀数组 Description Sandy和Sue的热衷于收集干脆面中的卡片.然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是 ...

  5. 「LuoguP4752」牧 Divided Prime(判质数

    Description 给定一个数字 A,这个 A 由 a1,a2,⋯,aN相乘得到. 给定一个数字 B,这个 B 由 b1,b2,⋯,bM相乘得到. 如果 A/B 是一个质数,请输出YES,否则输出 ...

  6. struts2通用标签

    Struts2框架为我们提供了很多标签,这些标签总体上可以分为两类:通用标签和UI标签.通用标签分为两类:数据标签和控制标签.数据标签用于访问值栈中数据,控制标签用于控制呈现页面时数据执行流程.使用S ...

  7. 51单片机 小车 L298N pwm调速 串口控制 按键控制

    难点:1.串口定时器T1,和T0定时器优先级 2.pwm频率与占空比的设置 按键控制 按键1——前进 按键2——后退 按键3——加速 按键4——减速 (板子上只有四个按键) 串口控制 ‘1’——前进 ...

  8. 进程动态拦截注入API HOOK

    最近工作中遇到一个问题,需要通过程序界面进行判断程序的运行状态,刚开始认为很简单,不就是一个窗体控件获取,获取Button的状态和Text.刚好去年干过该事情,就没太在意,就把优先级排到后面了,随着项 ...

  9. SpringAOP和Spring事物管理

    Spring AOP : Pointcut表达式: designators-指示器 wildcards-通配符 operators-操作符 wildcards: * -- 匹配任意数量的字符 + -- ...

  10. java 丢失的异常

    采用finally从句中的,可能会丢失异常 package thinking; //: LostMessage.java // How an exception can be lost class V ...