向視圖中傳遞變量
使用with()方法
return view('articles.lists')->with('title',$title);
直接給view()傳參數
return view('articles.lists',['title'=>$title]);
使用compact
return view('articles.lists',compact('title','intro'));
使用Migration
php artisan make:migration create_articles_table --create='articles'
php artisan migrate:rollback
php artisan migrate
時間處理庫Carbon
$article->published_at = Carbon\Carbon::now();
在.env
中我們設置了APP_DEBUG=true
,
404
頁面,在resources/views/errors/
文件夾下創建一個404.blade.php
。
使用illuminate/html
安裝
1、composer require illuminate/html
2、提供Service Provider和指定Facade
Request表單驗證
1、php artisan make:request StoreArticleRequest 這個命令生成的文件位於app/Http/Requests/
2、會有兩個方法:
authorize()
和 rules()
。
authorize()
可以這樣簡單地理解:我們在處理這個表單請求(通常是一個post請求)的時候是否是需要進行身份驗證,這種驗證是指:比如A發表的評論,B能不能進行編輯。如果不能,則保留返回false
,如果可以,則修改返回true
。那么我們這里的邏輯是:既然是發表文章,在我們這個站點注冊的用戶(如果開放注冊的話)都是可以發表文章的,所以我們首先修改authorize()
方法,將其返回值改為:return true;
。
然后對於rules()
方法,我們需要在這里設置我們的驗證規則,比如我們可以設置下面這個的驗證規則:
3、將整個StoreArticleRequest
類的實例以$request
變量傳入store()
方法
如果你不想錯誤信息為英文,可以到resources/lang/en/validation.php
修改,或者你直接創建一個新的語言文件包。
使用Validation
$validator = Validator::make($input, [ 'title' => 'required|min:3', 'body' => 'required', ]);
if ($validator->fails()) { }
setAttribute
1、在Article.php
中添加下面的方法:
public function setPublishedAtAttribute($date) { $this->attributes['published_at'] = Carbon::createFromFormat('Y-m-d',$date); }
這里注意這個寫法set+字段名+Attribute
,還有的就是使用駝峰法。比如你要加密密碼的時候可以這樣:
public function setPasswordAttribute($passowrd) { $this->attributes['password'] = Hash::make($passowrd); //僅僅是舉例 }
這里將published_at
字段作為Carbon對象來處理,注意在文件頭部使用use Carbon\Carbon;
來引入Carbon。
Article.php
添加一行代碼使published_at
作為Carbon對象來處理:
protected $dates = ['published_at'];
queryScope
1、
$articles = Article::where('published_at','<=',Carbon::now())->latest()->get();
$articles = Article::latest()->published()->get();
2、在我們的Article.php
中增加下面的方法:
public function scopePublished($query) { $query->where('published_at','<=',Carbon::now()); }
這里注意一下寫法scope+自定義的方法名字
,還有就是一如既往的駝峰法。
關聯表
public function up() { Schema::create('article_tag', function (Blueprint $table) { $table->increments('id'); $table->integer('article_id')->unsigned()->index(); $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade'); $table->integer('tag_id')->unsigned()->index(); $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade'); $table->timestamps(); }); }
foreign():外鍵 references():參照字段 on():參照表 onDelete():刪除時的執行動作 這里
cascade 是跟着刪除,比如刪除了某篇文章,我們將article_tag中包含article_id一樣的記錄也刪除
getAttribute