zoukankan      html  css  js  c++  java
  • laravel 5.1 使用Eloquent ORM 操作实例

    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

    //例子下载后请自行配置数据库。

  • 相关阅读:
    todo-list
    codeforces 794 (#414 DIV1+DIV2)
    2018bnu校赛总结
    codeforces 743D
    HDU-2196 Computer (树形DP)
    HDU- 1005 Number Sequence(矩阵快速幂)
    HDU- 4000 Fruit Ninja(树状数组)
    codeforces 505C
    codeforces 286B
    codeforces 3D
  • 原文地址:https://www.cnblogs.com/fan-bk/p/8126834.html
Copyright © 2011-2022 走看看