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;
阅读全文
0 0
- Laravel5.5的MVC
- 开启简单的laravel5 MVC模式
- laravel5.5的新特性简单说明
- 基于Laravel5.5的模块化开发
- Laravel5框架的搭建
- Laravel5框架的安装
- 使用laravel5.5
- 使用laravel5.5 时遇到Undefined offset: 1的问题
- 在laravel5.5中使用自己创建的类
- Laravel5.5源码详解 -- Session的启动分析
- Laravel5.5源码详解 -- Config 配置文件的加载
- Laravel5.5源码详解 -- 数据库的启动与连接过程
- laravel5中间件的使用例子
- laravel5.2session的使用
- Laravel5中Cookie的使用
- Laravel5中Cookie的使用
- laravel5.5 常用 artisan 命令
- laravel5.5+adminLte搭建后台
- Struts2_防止重复提交的token拦截器
- Android扫一扫(Zxing),闪光灯,生成二维码图片,解析二维码(条码)等
- scala将两个数组合并成一个
- 拉格朗日对偶
- Freemaker FTL指令常用标签及语法
- Laravel5.5的MVC
- 【满屏干货】阿里云CDN HTTPS最佳实践汇总
- otter系列—配置最简同步任务
- 欢迎大家加入我们的QQ交流群
- Spring Cloud -- 主要成员
- java的加锁和解锁
- Java-Redis
- Linux vi编辑器显示行号
- springboot搭建,如有问题欢迎指出,互相学习