Laravel5.5的MVC

来源:互联网 发布:mac xquartz 用法 编辑:程序博客网 时间:2024/05/21 06:02

大笑经过一段时间的谷歌+百度,基本上搞清楚了Laravel5.5的MVC套路。

PS:现阶段的总结,以后也许有更妙的,会不定时更新的。

一、控制器 \app\Http\Controllers\Controller.php

增加一个函数,方便所有控制器使用,主要是将Laravel toArray后再次toarray好得到我想要的数组

class Controller extends BaseController{    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;    //对象转数组    public function object_to_array($obj){        $_arr=is_object($obj)?get_object_vars($obj):$obj;        foreach($_arr as $key=>$val){            $val=(is_array($val))||is_object($val)?$this->object_to_array($val):$val;            $arr[$key]=$val;        }        return $arr;    }}

二、控制器 \app\Http\Controllers\IndexController.php

根据我的理解,MVC按顺序应该是CMV才对。。。下面给出了控制器中的常用操作方法和用模型的方法,注意观察。

<?phpnamespace App\Http\Controllers;use App\Http\Controllers;use Illuminate\Support\Facades\DB;use App\Http\model\Test;class IndexController extends Controller {    /**     * 显示首页。     *     * @return Response     */    public function index(){        //基本设置        $title= 'index page';        //查询数据        $Test = new Test();        $list = $Test->readTest();        //dump($list);exit;        //添加        //$sql="insert into think_test (name,email) values ('lee','lee@gmail.com')";        //$result=DB::insert($sql);        $array_data=array();        $array_data[0]['name']='tom';        $array_data[0]['email']='tom@gmail.com';        $array_data[1]['name']='jerry';        $array_data[1]['email']='jerry@gmail.com';        $result=DB::table('think_test')->insert($array_data);        //dump($result);exit;        if($result===false){            echo 'insert error';exit;        }        //列表        /*$sql="select name from think_test where id>1 order by id desc limit 0,20";        //echo $sql;exit;        $list=DB::select($sql);*/        /*$list=DB::table('think_test')->select('id','name','email')->where('id', '>', 1)->offset(2)->limit(2)->orderBy('id', 'desc')->get()->toArray();        $list=$this->object_to_array($list);*/        //dump($list);exit;        //单行        $info= DB::table('think_test')->where('id','>', '1')->first();        $info=$this->object_to_array($info);        //dump($info);exit;        //单字段        $email = DB::table('think_test')->where('id','=', '3')->value('email');        //dump($email);exit;        //指定字段增加或减少        //$result=DB::table('think_test')->where('id','=', '1')->increment('votes', 5); //指定字段增加,返回的是影响的行数...        //$result=DB::table('think_test')->where('id','=', '1')->decrement('votes', 5); //指定字段减少,返回的是影响的行数...        //dump($result);exit;        //删除        //$result=DB::table('think_test')->where('id','>', '8')->delete();    //返回影响的行数        //dump($result);exit;        //清空表 删减表        //$result=DB::table('think_test')->truncate();    //成功清空时返回null        //dump($result);exit;        return view('index',compact('title','list','info','email'));    }}

三、模型 新建 \app\Http\model文件夹,然后 新建 \app\Http\model\Basic.php

PS:建这个主要是为了其他模型继承这个基本模型,类似控制器中的BasicController作用(大笑也不知道这样写是否符合规范,只是实现了我想要的效果)

<?phpnamespace App\Http\model;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Facades\DB;class Basic extends Model{    //对象转数组    public function object_to_array($obj){        $_arr=is_object($obj)?get_object_vars($obj):$obj;        foreach($_arr as $key=>$val){            $val=(is_array($val))||is_object($val)?$this->object_to_array($val):$val;            $arr[$key]=$val;        }        return $arr;    }    }

四、模型 新建 \app\Http\model\Test.php

<?phpnamespace App\Http\model;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Facades\DB;class Test extends Basic{    protected $table = 'think_test';    public $timestamps = false;    //查    public function readTest(){        $list=DB::table('think_test')->select('id','name','email')->where('id', '>', 1)->offset(2)->limit(2)->orderBy('id', 'desc')->get()->toArray();        $list=$this->object_to_array($list);        return $list;    }}

五、视图 \resources\views\index.blade.php

主要是展示数据

<div class="content">                <div class="links">                    <p>{{ $info['id'] }}</p>                    <p>{{ $info['name'] }}</p>                    <p>{{ $info['email'] }}</p>                </div>                <div class="links">                    <p>{{ $email}}</p>                </div>                <div class="links">                    @foreach($list as $item)                        <p>ID:{{ $item['id']}}  Name:{{ $item['name']}}  Email:{{ $item['email']}}</p>                    @endforeach                </div>                <div class="links">                    {{$list[1]['name']}}                </div>            </div>

六、附其他:

路由:

Route::get('/', 'IndexController@index');

数据库设置:

'mysql' => [            'driver' => 'mysql',            'host' => env('DB_HOST', '127.0.0.1'),            'port' => env('DB_PORT', '3306'),            'database' => env('DB_DATABASE', 'laravel'),            'username' => env('DB_USERNAME', 'root'),            'password' => env('DB_PASSWORD', 'root'),            'unix_socket' => env('DB_SOCKET', ''),            'charset' => 'utf8mb4',            'collation' => 'utf8mb4_unicode_ci',            'prefix' => '',            'strict' => true,            'engine' => null,        ],

数据表创建:

CREATE TABLE `think_test` (  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主ID',  `name` varchar(20) CHARACTER SET utf8 DEFAULT NULL COMMENT '姓名',  `email` varchar(50) CHARACTER SET utf8 DEFAULT NULL COMMENT 'email',  `votes` int(6) NOT NULL DEFAULT '0' COMMENT '票数',  PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4;


原创粉丝点击