Laravel5.0学習02 応用例

WBOY
リリース: 2016-06-23 13:14:16
オリジナル
980 人が閲覧しました

この記事では、laravel5.0.22を例に説明します。

このセクションでは、例として簡単なブログの作成を使用します。

準備

データベース設定

.env ファイル (config/database.php を直接変更することもできます)

DB_HOST=localhostDB_DATABASE=myblogDB_USERNAME=rootDB_PASSWORD=123456
ログイン後にコピー

データベーステーブル:

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  
ログイン後にコピー

Start

ここでは当面 Eloquent ORM は使用しません。クラスは直接使用されます。

Controller

新しいコントローラーを作成します: app/Http/Controllers/BlogController.php

<?phpnamespace App\Http\Controllers;use Illuminate\Support\Facades\DB;/** * * @author YJC *         */class BlogController extends Controller{        public function index() {                $list = DB::table('blog')->get();                //需要return        return view('blog.index', ['list' => $list]);    }}
ログイン後にコピー

View

新しいマスター ビューを作成します: resource/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>        @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/index.blade.php

rree

routing

rree

visit

@extends('blog.layout')@section('content')    @foreach($list as $blog)        <div>          <h1>{{$blog->title}}</h1>          <p>{{$blog->content}}</p>        </div>    @endforeach@endsection
ログイン後にコピー

ルーティング スキル

デフォルトでは、新しいメソッドが追加されるたびにルートを記述する必要がありますが、これは比較的面倒です。 Laravel は、コントローラー内のすべてのメソッドに対して 1 つのルートのみを記述することをサポートしています。従う必要があるルールは次のとおりです:

1) コントローラー内のメソッドは get と post で始まる必要があります。
2) Route::get() は Route::controller() に変更されます。

例: 上記のインデックス メソッドを getIndex に変更する必要があり、ルートは次のように記述されます:

Route::get('blog', 'BlogController@index');
ログイン後にコピー

このようにして、ブログ コントローラーのすべてのメソッドをルートに一致させることができます。例えば、以下のような方法があります。

http://localhost/laravel5/public/index.php/blog
ログイン後にコピー

をすべて一致させることができます。直接アクセスする場合:

Route::controller('blog', 'BlogController');
ログイン後にコピー

記事詳細ページを追加

getDetail()メソッドをコントローラーに追加:

public function getIndex(){}public function getDetail(){}public function postAdd(){}
ログイン後にコピー

index.blade.phpを変更:

http://localhost/laravel5/public/index.php/blog/indexhttp://localhost/laravel5/public/index.php/blog/detail/2http://localhost/laravel5/public/index.php/blog/add
ログイン後にコピー

記事詳細ページを追加detail.blade.php:

public function getDetail($id) {    $blog = DB::table('blog')->find($id);        return view('blog.detail', ['blog' => $blog]);}
ログイン後にコピー

ルーティングを変更:

@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
ログイン後にコピー

Eloquent ORM を使用します

上記の DB クラスを使用しています。次に、DB クラスの代わりに Eloquent ORM を使用します。

Laravel の Eloquent ORM は、データベースと対話するためのよりエレガントな ActiveRecord 実装を提供します。 各データベース テーブルはモデル ファイルに対応します。

モデル

アプリの下に新しい Blog.php を作成します:

@extends('blog.layout')@section('content')    <div class="jumbotron">      <h1>{{$blog->title}}</h1>      <p>{{$blog->content}}</p>    </div>@endsection
ログイン後にコピー

ヒント: すべての DB クラスのクエリ コンストラクターのメソッドは、Eloquent モデルをクエリするときにも使用できます。

コントローラーでモデルを使用します

BlogController.php を BlogController.php.bak にコピーし、元の BlogController.php の内容をクリアして、次の内容に変更します:

//对应blog/indexRoute::get('blog', 'BlogController@index'); //对应blog里任何方法,注意方法要加get或者postRoute::controller('blog', 'BlogController');
ログイン後にコピー

Eloquent ORM は、簡単に操作できる多くの機能を提供します-データベースを操作するメソッドを使用します。例:

Blog.php モデル ファイルでは、次のクエリ メソッドを使用できます (Eloquent ORM は $this 呼び出しと静的呼び出しの両方をサポートしています):

<?phpnamespace App;use Illuminate\Database\Eloquent\Model;/**  * @author YJC *  */class Blog extends Model{        //指定表名,不指定系统会默认自动对应名称为「类名称的小写复数形态」的数据库表    protected $table = 'blog';        //指定主键,默认就是id    protected $primaryKey = 'id';        //默认情况下,在数据库表里需要有 updated_at 和 created_at 两个字段。如果您不想设定或自动更新这两个字段,则将类里的 $timestamps 属性设为 false即可    public $timestamps = false;    }
ログイン後にコピー
その他の操作メソッドについては、次を参照してください: http://www.golaravel. com /laravel/docs/5.0/eloquent/

http://localhost/laravel5/public/index.php/blog ページにアクセスしてご覧ください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート