Laravel 的 Eloquent ORM 提供了更优雅的ActiveRecord 实现来和数据库的互动。 每个数据库表对应一个模型文件。
数据库配置
.env文件(也可以直接修改config/database.php)
DB_HOST=localhost DB_DATABASE=myblog DB_USERNAME=root DB_PASSWORD=root
数据库表:
CREATE TABLE `blog` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL DEFAULT '0', `title` varchar(50) NOT NULL DEFAULT '', `content` text NOT NULL, `flag` tinyint(2) NOT NULL DEFAULT '1', `create_time` int(11) NOT NULL DEFAULT '0', `update_time` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
一、模型(Model)
在目录
下新建 app/Blog.php 文件
<?php namespace App; use IlluminateDatabaseEloquentModel; class Blog extends Model{ //指定表名,不指定系统会默认自动对应名称为「类名称的小写复数形态」的数据库表 protected $table = 'blog'; //指定主键,默认就是id protected $primaryKey = 'id'; //默认情况下,在数据库表里需要有 updated_at 和 created_at 两个字段。如果您不想设定或自动更新这两个字段,则将类里的 $timestamps 属性设为 false即可 public $timestamps = false; }
二、控制器
在目录下新建:app/Http/Controllers/BlogController.php 文件
<?php namespace AppHttpControllers; //需要use模型 use AppBlog; use IlluminateSupportFacadesInput; use IlluminateSupportFacadesRequest; use IlluminateSupportFacadesRedirect; class BlogController extends Controller{ public function getIndex() { $list = Blog::all(); return view('blog.index', ['list' => $list]); } public function getDetail($id) { $blog = Blog::find($id); return view('blog.detail', ['blog' => $blog]); } public function getAdd() { return view('blog.add'); } public function postAdd(Request $request) { $blog = new Blog; $blog->title = Input::get('title'); $blog->content = Input::get('content'); $blog->uid = 1; //保存数据 if ($blog->save()) { //重定向,需要先导入IlluminateSupportFacadesRedirect return Redirect::to('blog'); } else { return Redirect::back()->withInput()->withErrors('保存失败!'); } } }
二、视图
在目录下新建:resources/views/blog/layout.blade.php 母板视图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel</title> <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"> </head> <body> <!--新增按钮--> <header class="navbar navbar-static-top bs-docs-nav" id="top" role="banner"> <div class="container"> <nav id="bs-navbar" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li> <a href="{{url('blog/add')}}">新增</a> </li> </ul> </nav> </div> </header> @yield('content') <!-- Scripts --> <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </body> </html>
在目录下新建:resources/views/blog/add.blade.php 视图
@extends('blog.layout') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">新增博客</div> <div class="panel-body"> <!--错误信息输出--> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>输入不正确!</strong> 输入的格式不正确!<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!--表单--> <form action="{{ URL('blog/add') }}" method="POST"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="text" name="title" class="form-control" required="required"> <br> <textarea name="content" rows="10" class="form-control" required="required"></textarea> <br> <button class="btn btn-lg btn-info">新增</button> </form> </div> </div> </div> </div> </div> @endsection
在目录下新建:resources/views/blog/index.blade.php 视图
@extends('blog.layout') @section('content') @foreach($list as $blog) <div> <h1><a href="{{url('blog/detail/'.$blog->id)}}">{{$blog->title}}</a></h1> <p>{{$blog->content}}</p> </div> @endforeach @endsection
在目录下新建:resources/views/blog/detail.blade.php 视图
@extends('blog.layout') @section('content') <div class="jumbotron"> <h1>{{$blog->title}}</h1> <p>{{$blog->content}}</p> </div> @endsection
二、设置路由
laravelappHttp
outes.php
<?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ Route::get('/', function () { return view('welcome'); }); //对应blog/index Route::get('blog', 'BlogController@index'); //对应blog里任何方法,注意方法要加get或者post Route::controller('blog', 'BlogController');
上一篇实例基础:http://www.cnblogs.com/fan-bk/p/8118434.html
例子下载地址: https://files.cnblogs.com/files/fan-bk/laravel.zip
//例子下载后请自行配置数据库。