主要是在laravist上看视频,讲的很棒,感觉学到了很多。好喜欢最后的那句:Happy Hacking~
Artisan 是 Laravel 内置的命令行接口。它提供了一些有用的命令协助您开发,它是由强大的 Symfony Console 组件所驱动。
插一句,安装comper弄了很久,因为网上都是OS X的方法而我开始不知道也完全不懂。看教程的时候有个博主直接说:windows是最差的开发平台没有之一。
看到这句立马关掉了他的教程,我没用过OS X自然没有发言权,但是不喜欢这样偏颇的人,是很别扭,但是就像WP,从Android用到ios再到它,我知道app生态有多差,但是我仍然喜欢它。
从composer上建立项目:
composer create-project laravel/laravel test_laravel
启动服务器:
php artisan serve
在这里和同事讨论了一下,因为太菜了半天才懂她卡在什么地方,她一直想着去配置Apache,但是Laravel使用的是PHP内置的服务器,所以其实把WAMP的Apache关掉也可以直接运行,项目也不用放在www文件夹下。
用blade来布局真的很方便,可以在视图中继承(extend) 一个 Blade 页面布局。
在blade中添加好css(bootCDN的bootstrap css推荐!
@yield('') | @extends('')@section('')@stop
建立一个controller(在命令最后加 --plain可以创建一个没有任何预定义方法的控制器。
php artisan make:controller SitesController
然后添加方法:
public function about()
{
return view('sites.about');
}
在Resources\views中新建about.blade.php
注册路由,查看页面需要在http文件下的routes.php中注册路由
Route::get('/about', 'SitesController@about');
- 传递数据回视图(view)
最后在about方法中写入:
$people = ['Talor Otwell','Jeffray Way','Happy Peter'];
return view('sites.contact',compact('people'));
blade.php显示
@section('content')
<h1>Page</h1>
<h3>People I Admire</h3>
<ul>
@if count($people>0)
@foreach($people as $person)
<li>{{$person}}</li>
@endforeach
</ul>
@endif
@stop
[config] | 环境配置
app.php
'debug' => env('APP_DEBUG', true), //上线后记得改回false
'timezone' => 'PRC' //设为中国时区People's Republic of China
migration可以看做是数据库版本管理,因为可以roll back。
创建一个migration文件并执行就可以直接生成表:
php artisan make:migration create_articles_table --create=articles
创建数据表的时候一直报错,Access denied。
发现远原来.env文件没配置好,
DB_DATABASE:laravel
DB_USERNAME:root
DB_PASSWORD:
然后就在cmd中运行建表:
php artisan migrate
可以发现在laravel数据库中建好了三个表,分别是migrations, password_resets, users
Eloquent 是 Laravel 的 'ORM',即 'Object Relational Mapping',对象关系映射。ORM 的出现是为了帮我们把对数据库的操作变得更加地方便。
Eloquent 让一个 'Model类' 对应一张数据库表,并且在底层封装了很多 'function',可以让 Model 类非常方便地调用。
定义一个Eloquent模型
方法一:
class Article extends Model {}
方法二:
php artisan make:model Article
创建完能在app文件夹下发现有一个Article.php生成,
若没有特别指定,系统会默认自动对应名称为「类名称的小写复数形态」的数据库表。所以会对应上面migration产生的articles table;
进入命令行交互界面:
php artisan tinker
实例化一个类
$article=new app\Article;
用create实现一次性创建:
$article=App\Article::create(['title'=>'second title','content'=>'second content', 'published_at'=>Carbon\Carbon::now()]);
这时执行会报一个错_MassAsignmentException with message 'title'_
因为Laravel默认这些字段不可以直接填充,这时需要到Article.php的文件中加入$fillable属性。
protected $fillable=['title','content','published_at'];
然后在执行,好的失败了……还是exception,再看视频原来还要退出再进入tinker。
ok,继续报错:PHP Fatal error: Class 'app\Article' not found in eval()'d code on line 1
记得之前实例化的时候就一直报这个错,不知怎么又好了……
然后AOL搜了一圈,说在app前加\也不对,然后改成App\Article就对了,刷新数据库也看到创建article成功了。不知什么原理,文件夹名我看了是小写没错。
更新数据
$article->update(['title'=>'change title']);
删除model,Laravel提供了软删除,模型类中加入:
use SoftDeletes; class Article extends Model{ protected $dates = ['deleted_at']; }
existing table增加字段
这时发现了一个问题,就是表中没有delete_at这个字段,如果直接用rollback所有数据也就没有了。这时候就再新建一个migration文件。
php artisan make:migration add_delete_at_column_to_articles --table=articles
然后再去命名的migration文件中修改,up方法添加:
$table->softDeletes();
down方法中添加:
$table->dropcolumn('delete_at');
最后再执行就ok~通过这样还可以删除column,修改字段长度等,database:migration中有详细说明。