Laravel学习

主要是在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模板引擎 | 文档 | 中文文档

用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 ORM | 中文文档 | 深入理解

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中有详细说明。



你可能感兴趣的:(laravel)