laravel学习笔记二

原创 2015年11月17日 23:52:59

一、Eloquent

make:model name  会自动对应到model的tablename

php artisan tinker,进入一个php解释器交互界面。

$a= new App\AA;打开AA类。

$a->title="title";

$a->time=Carbon\Carbon::now();

$a->save();//写入数据库

$a->toArray();

$first=App\Articl::find(1);

$sencond=App\Article:where('columea','=','a')->get()->get();

$sencond=App\Article:where('columea','=','a')->get()->first();

$a=App\Article::create(['abc'=>'a','bca'='b']);//直接创建不用save,需要在article.php中添加$fillable=['abc','bca']就可以直接创建了。

$a->update(['abc'=>'b']);


二、建立一个blog全部过程

Route::get('/articles','ArticlesController@index');

Route::get('/articles/{id}','ArticlesController@show');//变量放在大括号中

php artisan make ::controller ArticlesController;

public function index()

{

$articles = Article::all();//要添加use App\Article,即可使用ArticleModel的方法

return view('articles.index',compact('articles'));

}

public function show($id)

{

$a = Article::find($id);

$a = Article::findOrFail($id);//如果找不到直接fail掉

//也可以这样实现

if(is_null($a))

abort('404');

return view('articles.show',compact('a'));//之后需要建立一个articles/show.blade.php文件

}

新建页面文件,articles/index.blade.php:

@extend('app')

@section('content')

<h1>Articles</h1>

<hr>

@foreach($articles as $article)

<h2><a href="/articles/{{$article->id}}">{{$article->title}}</h2>

<article>

<div class="body">

{{$article->content}}

</div>

</article>

@endeach

@stop

@content

三、Form

使用illuminate/html中的Form包

1.首先下载:composer require illuminate/html

2.配置:config----app.php

'providers' 这个数组中illuminate/html\HtmlServiceProvider::class

'aliases' 快捷方式:'form'=illuminate/html\FormFacade::class

3.POST路由

在routes.php中增加Route::post('/articles','ArticlesController@store');

4.view的php界面中 Form创建:

{{!!Form::open(['url'=>'articles'])!!}}

<div class="form-group">

{{!!Form::label('name')!!}}

{{!!Form::text('name',null,['class'=>'form-control','id'=>'id'])!!}}

</div>


<div class="form-group">

{{!!Form::label('name')!!}}

{{!!Form::textarea('name',null,['class'=>'form-control','id'=>'id'])!!}}

</div>


{{!!Form::submit('发表文章',['id'=>'idnumber'])!!}}

{{!!Form::close()!!}}


5.在controller的store方法中:

public function store(Request $request)

{

dd($request->all());

//dd($request->get('title'));

//接受post,存入数据库,重定向三步

$input=$request->all();

$input['published_at']=Carbon::now();

Article::create($input);

return redirect('/articles');

}

6.index方法修改

{

//$articles = Article:all();

$articles = Article::latest()->get();//按照新发表的顺序排序

}

四、queryScope和setAttribute用法

1.改变文章发布生效时间,在controller中:

public function store(Request $request)

{

dd($request->all());

//dd($request->get('title'));

//接受post,存入数据库,重定向三步

//

Article::create($request->all());

return redirect('/articles');

}

2.在view中添加:

<div class="form-group">

{{!!Form::label('published_at')!!}}

{{!!Form::input(''date','published_at',date('m-d-Y'),['class'=>'form-control','id'=>'id'])!!}}

</div>

3.在Article的Model文件中增加时分秒:

public function setPublishedAtAttribute($date)

{

$this->attributes['published_at']= Carbon::createFromFormat('Y-m-d',$date);

}

命名方式:setYOURNAMEAttribute,这样在数据存入数据库之前,会做一个相应的预处理。

4.将发布时间在未来的文章隐藏显示:

public function index()

{

$articles = Article::latest()->where('published_at','<',Carbon::now())->get();

或者:

$articles = Article::latest()->published()->get();//需要在Article类中增加一个scopePublished()方法

return view('articles.index',compact('articles'));

}

5.增加scopePublished()方法

public function scopePublished($query)

{

$query->where('published_at','<',Carbon::now());

}

6.Carbon的一些方法

$cb=$article->created_at默认的属性是作为Carbon对象存在的

$cb->year;

$cb->diffForHumans();//多少分钟之前,很强大

要将published_at作为Carbon对象使用,需要在Articles文件中为它设置属性:

protected $dates = ['published_at'];


五、表单验证

1.使用request方法:

make request命令

php artisan make:request CreatArticleRequest//在app\Requests下生成相应的文件

主要有两个函数:authorize(),rules()

public function rules()

{

return[

'title'=>'required | min:3 | max:5',

'content'=>'required',

'published_at'=>'required'

];

}

public function store(Requests\CreatArticleRequest$request)

{

Article::create($request->all());

return redirect('/articles');

}

这样验证不成功的话store方法是不会执行的。如果想要定位错误,需要继续修改

<div class="form-group">

{{!!Form::label('published_at')!!}}

{{!!Form::input(''date','published_at',date('m-d-Y'),['class'=>'form-control','id'=>'id'])!!}}

</div>

@if($error->any())

@foreach($errors->all() as $error)

<li class="list-group-item list-group-item-danger"> {{$error}}</li>

@endforeach

@endif


2.使用Request的validate()方法

public function store(Request $request)

{

$this->validate($request,['title'=>'required','content'=>'required']);

Article::create($request->all());

return redirect('/articles');

}


六、编辑 Form-Model-Binding

php artisan route:list//查看路由

Route::resource('articles','ArticlesController');//批量的生成路由

Route::get('/articles/{id}/edit','ArticlesController@edit');

Route::post('');


controller中的edit()方法:

public function edit($id)

{

$article= Article::findOrFail($id)

return view('articles.edit',compact($article));

}

新建view文件:

@section('content')

{!! Form::model($article,['method'=>'PATCH']  !!}// Form-Model-Binding,这样将Article的属性绑定到FORM内容中

//与创建页面时相同

@stop


更新controller@update()

public function update(Request $request, $id)

{

$article= Article::findOrFail($id);

$article->update(request->all());

return view('/articlest');

}


增加表单验证同上。

@include(errors/list)  //默认resources\views文件夹下,便于维护


七、用户注册和登陆

laravel5.1中去除了Authetication模块,需要自己实现

1.首先在Routes.php 增加GET和POST两个login,GET和POST两个register,一个GET的logout。

2.在Controller中查看Auth相关方法

3.实现views的auth.register, auth.login等界面

4.获取登陆的用户信息:1.Controller中Auth::user()2.视图文件 {{Auth::User()->name}};


八、Eloquent Relationship

一对一,一对多,多对多。

这里要建立文章和用户的对应关系。

1.修改database\migrations的migrations文件中的up方法,增加一些数据库表属性。

$table->integer('user_id')->unsigned();

$table->foreign('user_id')->references('id')->on('user');//创建外键,限制为仅仅是user中的id

2. php artisan migrate:refresh //会将之前的数据抹掉

所以需要新建一个: php artisan make:migration add_user_id_column_to_articles --table=articles





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

6. Laravel5学习笔记:IOC/DI的理解

Laravel框架的基础是一个功能强大的控制反转容器(IoC container)。 为了真正理解该框架,需要好好掌握该容器。然而我们需要了解,控制反转容器只是一种用于方便实现“依赖注入”的工具。但要...

laravel5 timestamp

提纲: -timestamp与Timestamp类型 -mysql中的时间数据类型 -php中的时间函数 -Laravel5 中的timestamp问题的引出: laravel5选择carb...
  • dskwe
  • dskwe
  • 2015-12-27 20:11
  • 3222

手机验证码登录与注册

注册大概要实现几个API: 1.收到注册电话号码,验证号码格式有效后,生成验证码,并提交到短信发送队列中。短信处理任务负责将队列中的短信发送到相应的短信供应商API中,得到处理结果,如果正确,则返回...
  • dskwe
  • dskwe
  • 2016-01-11 21:39
  • 2220

java中迭代器的使用

java中迭代器Iterator接口是用来对集合中的对象进行遍历或者移除操作的,大多数是遍历操作的下面介绍迭代器的使用:ArrayList list=new ArrayList();  list.ad...

1. Laravel5学习笔记:Composer.json配置文件说明

Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发效率时,PHPer们还在复制粘贴的黑暗中。PHP在Composer之前,包管理的历史不...

Laravel学习笔记一

一、路由机制: App\Http\routes.php 文件中,做http路由处理。 比如 Route::get('/',function(){return view('abc')});将请求给一个匿...
  • dskwe
  • dskwe
  • 2015-11-13 16:49
  • 402

Laravel 5 学习笔记

  • 2017-03-19 10:28
  • 26.09MB
  • 下载

laravel5学习笔记(二)

这两天被composer弄得抓狂~,又因为不熟悉win7下的命令,弄得异常纠结~好了,切入正题。。。 当初图省事,所以下载的laravel一键安装包,后来发现不行,还是得下载composer。因为采用...

(二) Laravel学习笔记之执行流程//待完善V1.0

1、Composer自动加载第三方类库 /public/index.php:/* |---------------------------------------------------------...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)