laravel 獲取最後一條sql的小函式,放在第三方函式庫裡面就行了
function lastSql()
{
$queries = DB::getQueryLog();
$a = end($queries);
$tmp = str_replace('?', '"' . '%s' . '"', $a["query"]);
return vsprintf($tmp, $a['bindings']);
}
方法欺騙:讓HTML表單實現RESTFUL
Laravel MVC框架
http://laravelacademy.org/resources-download
下載映象優化版:基於Laravel 官方 GitHub 倉庫原始碼的基礎上安裝了依賴庫(vendor),頁面開啟巨慢的問題我們把所有引用的google字型全部刪掉了等。
應用key
接下來要做的事情就是將應用的 key(APP_KEY)設定為一個隨機字串,如果你是通過 Composer 或者 Laravel 安裝器安裝的話,該 key 的值已經通過 php artisan key:generate
命令生成好了。通常,該字串應該是 32 位長,通過 .env
檔案中的 APP_KEY
進行配置,如果你還沒有將 .env.example
檔案重新命名為 .env
,現在立即這樣做。如果應用 key 沒有被設定,使用者 Session 和其它加密資料將會有安全隱患!執行php artisan key:generate前提是你有個.env檔案.然後把根路徑下的.env.example的內容複製進去,再執行 php artisan key:generate
目錄許可權
安裝完 Laravel 後,需要配置一些目錄的讀寫許可權
chmod -R 777 bootstrap/cache
chmod -R 777 storage
開啟錯誤日誌:.env 開啟 debug,在app/storage/logs/laravel.log中找到具體錯誤
我們說說Laravel中Model,Controller,Views的工作流程,也就是下面這個順序:
1.註冊路由 ---> 2.建立控制器 ---> 3. 控制器中獲取資料庫資料 ---> 4.在檢視中展示資料
我們在app/Http/routes.php
中註冊了我們首頁的路由:
Route::get('/', 'ArticleController@index'); //首頁
Route::get('articles/{id}', 'ArticleController@show'); //get路由
Route::post('article/update', 'ArticleController@update'); //post路由
Route::resource('photo', 'PhotoController'); //restful
可以直接使用這個路由,所以我們可以進入下一步。
建立控制器的時候你可以手動建立,不過還是推薦使用artisan這個命令列工具,在專案目錄之下(專案中的artisan檔案對應的目錄),命令列執行:
php artisan make:controller ArticleController --plain
//php artisan make:controller PhotoController --resource //5.2 restful
這裡需要說明的是--plain
這個參數列明只要一個簡單的controller,裡面不需要生成一堆如show()
,create()
等方法。
建立模型,首先我們要新建一張表來儲存 Article,命令列執行
php artisan make:model Models/Article
成功以後,修改 migration 檔案database/migrations/***_create_articles_table.php 的相應位置為:
Schema::create('articles', function(Blueprint $table)
{
$table->increments('id');
$table->string('url')->comment('回撥通知地址');
$table->integer('times')->default(0)->index()->comment('通知次數');
$table->string('params')->comment('通知引數');
$table->tinyInteger('is_success')->default(0)->index()->comment('是否通知成功');
$table->timestamps();
});
之後執行:
php artisan migrate
在laravel框架ORM模型中預設會有三個時間欄位,created_at,updated_at,deleted_at,這三個時間欄位是框架預設操作,不用另加程式碼去處理,非賞方便:const DELETED_AT='delete_at';
const UPDATED_AT='update_at';
const CREATED_AT = 'create_at';
去資料庫裡瞧瞧,articles 表已經躺在那兒啦。模型中加入
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model {
protected $table = 'articles'; //新增資料庫表名
public $timestamps = false; //關掉laravel內建時間戳
}
然後再呼叫模型
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
return $articles;
}
}
如果你直接返回查詢到得資料,因為laravel可能是出於這樣的考慮:一般這種情況下地返回,通常都是在建立api功能,比如你為你的一個手機App寫的api一樣,json資料無疑是很好的選擇
這裡我們首先需要修改的是ArticleController
中的index()
方法:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller; //不驗證時使用 2選1
//use App\Http\Controllers\Controller;
//use ValidatesRequests validate
class ArticleController extends Controller
{
/**
* 顯示列表資料
*
* @param Request $request
* @return Response
*/
public function index(Request $request)
{
//$id = $request->input('id');
$articles = Article::all();
return view('articles.index', compact('articles'));
}
/**
* Update the specified article.
*
* @param Request $request
* @param int $id 路由引數傳入的輸入資料,只需要將路由引數置於其他依賴之後
* @return Response
*/
public function update(Request $request, $id)
{
}
}
我們只是修改了return這一行的程式碼,使用view()
方法載入檢視,這個檢視就是位於resources/views/articles/
中的index.blade.php(
用的是blade模板引擎)
,最後使用compact('articles')
將資料傳給檢視檔案。
路由直接訪問view,套靜態頁用
Route::get('/', function () {
return view('welcome');
});
當使用者傳送一個get請求訪問我們站點的根目錄的時候,直接訪問這個試圖檔案位於resources/views/welcome.blade.php
laravel專案下面有4個資料夾:
app
、bootstrap
、public
、vendor
,這4個資料夾下面又有很多個子資料夾,當你第一次看到這麼豐富的資料夾內容時,是不是覺得很有壓力?沒關係,我們會逐一的來了解不同的資料夾。app
包含了站點的controllers(控制器),models(模型),views(檢視)和assets(資源)。這些是網站執行的主要程式碼,你會將你大部分的時間花在這個目錄裡。bootstrap
用來存放系統啟動時需要的檔案,這些檔案會被如index.php這樣的檔案呼叫。public
這個資料夾是唯一外界可以看到的web伺服器的目錄。它含有laravel框架核心的引導檔案index.php,這個目錄也可用來存放任何可以公開的靜態資源,如css,Javascript,images等vender
包含Composer命令相關管理檔案,包含了許多PHP相關的app應用程式laravel 獲取最後一條sql的小函式,放在第三方函式庫裡面就行了
function lastSql()
{
$queries = DB::getQueryLog();
$a = end($queries);
$tmp = str_replace('?', '"' . '%s' . '"', $a["query"]);
return vsprintf($tmp, $a['bindings']);
}
方法欺騙:讓HTML表單實現RESTFUL
HTML表單沒有支援 PUT 、PATCH 或 DELETE 請求。所以當定義 PUT 、PATCH 以及 DELETE 路由並在 HTML 表單中被呼叫的時候,您將需要新增隱藏 _method 欄位在表單中。傳送的 _method 欄位對應的值會被當做HTTP請求方法。舉例來說:
<form action="/foo/bar" method="POST">
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
</form>
測試在專案根目錄下簡單執行 phpunit
命令即可
Middleware是原來的路由filter的一個升級版,現在不用在filters.php裡定義過濾器,取而代之的是在 Middleware目錄中建立類,並在Kernel.php中配置全域性還是可選,全域性的Middleware在每個請求都會執行,而可選的就相當於原來的filter,可以在路由中使用,也可以在控制器中使用。
illuminate/html
nonfu/awesome-laravel //github Laravel精選資源大全
mccool/laravel-auto-presenter //MVP模式
swiggles/laravel-memcache //memcache擴充套件
Xethron/migrations-generator //從現有資料庫生成表遷移,包括索引和外來鍵!
nWidart/DbExporter //整個資料庫生成遷移,包括資料