ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**2018/12/22 晴 星期六** 初步学习laravel 首先在routes下,web中创建一个路由访问路径 ![](https://box.kancloud.cn/835b098631a5e3eb097617625f1ab537_1310x954.png) ``` Route::get('abc', 'abc@index'); //Hello是控制器的名字 index对应到的方法 ``` 其次在app/http/controllers/逻辑层中写一个方法 ![](https://box.kancloud.cn/0860452a1666911b867cb41d2243235b_1440x855.png) ``` <?php namespace App\Http\Controllers; use App\Http\Controllers\Pc\CommonController; class abc extends CommonController { public function index() { $info = 'Hello World!'; //$pinfo = phpinfo(); return view('abc')->with('info', $info); //第一个info就是key,第二个就是值上面的$info,这样这个值就可以显示在abc.blade.php里面了;如果views里面你还有一层文件夹abc那就写成view('abc.abc'); } } ``` 注意:use引用一定要对,不然一直是 not found,找不到 第三层也就是视图展示层,这里只要引用逻辑层中的数据就可以了,引用方法暂时只知道 {{ $info }} 这种 ![](https://box.kancloud.cn/c0b9a32ca6789ab12eb8f0ac4059e025_1105x796.png) ``` {{ $info }} ``` **2018/12/23 晴 星期天** 什么事mvc? 是软件设计模式. mvc的工作原理? url发出请求总入口index.php,带有模块名、控制器名、方法名三个参数,index.php接收到三个参数,去请求控制器中的方法,方法中调用M层获取数据或表操作,传递数据给V层,页面呈现完成或表操作完成。 url …/index.php?m=home&c=news&a=detail&id=5 | | index.php | | | Controllers/News.php/detail | | | M V 任何框架都基于MVC软件设计模板: ## 1.目录结构: 数据模型类对应的目录 app/Xxx.php 模板对应的目录 resource/views/xxx.blade.php 控制器对应的目录 app/Http/Controllers/XxxController.php 入口文件对应的目录 public/index.php 配置文件对应的目录 config/*** 系统文件对应的目录 vendor 路由文件对应的目录 routes/web.php ??? 工作原理: url地址发出请求,这个请求一定要传参数,请求被总入口public/index.php响应,找路由文件,匹配路由规则。路由对应的匿名函数或控制器方法被执行,在匿名函数中或控制器方法中请求M层及V层。 ## 2、 url地址规则(随心所欲) ## 3、 路由的编写 web.php,使用Route这个类,来定义路由规则 Route::get(“路由名称”,“控制器@方法|匿名函数”); url请求的方式为get,方法get被执行 Route::post(‘路由名称’,”控制器@方法|匿名函数”); url请求方式为post,方法post被执行。 Route::match([‘get’,’post’],’路由名称’,匿名函数|控制器@方法) url请方式可以是get及post,match都可以执行 Route::group([‘namespace’=>’Admin’,’prefix’=>’admin’],function(){ Route::get(‘news/add’,””); }) Route::get(‘路由名称’,”匿名函数|控制器@方法”) Route::post(‘路由名称’,”匿名函数|控制器@方法”) Route::match([‘get’,’post’],‘路由名称’,”匿名函数|控制器@方法”) index.php/news/detail/5 例子:呈现一个文章列表页面。不用M层。 1、 规定url地址 …/index.php/news/index 2、 写路由 ## 4、 控制器的编写 1、 放在app/Http/Controllers/XxxController.php 2、 类名和类文件名一致 3、 命名空间 namespace App\Http\Controllers; 4、 可以继承父类Controller 5、 方法名没有要求,一般小写。 控制器方法中接收数据可以使用类Request: ![](https://box.kancloud.cn/5c9b96a8d366e894f38ec4427a2e8f03_576x392.png) **2018/12/24 晴 星期一** 本地修改SignInController@signIn中APPID与appscret 新增设备归属地字段device_address **2018/12/25 晴 星期二** 要实现获取手机号码归属地,在app/Http/Controllers/Api/Common/SignInController.php中改写了登录, ``` // 请求地址 $url = 'http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel='.$tel; // 发起请求 //$res = file_get_contents($url); $res = curlRequest($url,'','GET'); if ( $res['code'] !== 200 ) return ['code'=>$res['code'],'status'=>false,'msg'=>$res['responseHeader']['msg']];// 判断请求是否成功 $data = $res['response'][$tel];// 接收返回值 if ( !$data ) return ['code'=>200,'status'=>false,'msg'=>'API Exception!'];// 返回值为空 $response['province'] = $data['detail']['province']; // 归属地 $response['city'] = $data['detail']['area'][0]['city']; // 城市 $response['service'] = $data['detail']['operator']; // 运行商 $response['fullname'] = $data['location']; // 运行商全称 return ['code'=>200,'status'=>true,'data'=>$response]; /** * 手机号码格式验证 * @param $tel * @return bool */ function isPhoneNumber($tel)//手机号码正则表达试 { return (preg_match("/0?(13|14|15|17|18|19)[0-9]{9}/",$tel))?true:false; } /** * 发起CURL请求 * @param string $url 请求地址 * @param string $data 请求数据 * @param string $method 请求方式 * @return array 一维数组 */ function curlRequest($url,$data = '',$method = 'POST') { $ch = curl_init(); //初始化CURL句柄 curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字串,而s不是直接输出 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //设置请求方式 curl_setopt($ch,CURLOPT_HTTPHEADER,array("X-HTTP-Method-Override: $method"));//设置HTTP头信息 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串 $document = curl_exec($ch);//执行预定义的CURL $code = curl_getinfo($ch,CURLINFO_HTTP_CODE); //获取HTTP请求状态码~ curl_close($ch); $document = json_decode(removeBOM($document),true); $document['code'] = $code; return $document; } /** * 检测并移除 BOM 头 * @param string $str 字符串 * @return string 去除BOM以后的字符串 */ function removeBOM($str = '') { if (substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) { $str = substr($str, 3); } return $str; } ``` **2018/12/28 阴 星期五 PHP之大坑** 上传时要修改js请求路径 APP修改 ysV2ios\js\gologin.js 后台修改路径 app/Http/Controllers/Api/Common/SignInController.php 昨天一整天在看到底是PHP是怎么写入数据库,正常来说只要是ajax请求,那么data中的参数可随意命名, ![](https://box.kancloud.cn/2999fc5cd06bc91b48729de19050cf9f_1083x545.png) 传到后台只要获取在写进数据库, ![](https://box.kancloud.cn/79f1fe14b06f5a8ae9cdf5424f4829e8_1394x783.png) 但是一直不对,参数传到后台了,就是写不进数据库.后来按照数据库的字段命名参数,居然就对了,而且还写进数据库了,不明其意啊, 用户注册或登录时可获取用户手机归属地与设备ip位置 **2019/1/2 晴 星期六** 修改了后台用户管理,resources/views/admin/customer/customerList.blade.php ![](https://box.kancloud.cn/9bc9ec7f5bdecec09e7a10f5b5d0ab23_1000x742.png) **### laeavel实用文档** 2019/1/5 晴 修改加盟商电话 加盟商 tb\_franchisers 添加了电话号 phone 1、修改加盟商电话视图 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/48414c3de24e4e2bb510f97c0d78b5c6/clipboard.png) 2、修改加盟商电话方法 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/678e5328ffbc4895bae3447518797fbe/clipboard.png) 2019/1/8 晴 后台添加加盟商 在等级价格表 tb\_service\_prices 新增 city\_id 城市字段 1、修改加盟商视图 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/59e45ed151e84076a9f889daefb0b051/clipboard.png) 2、修改加盟商 ServantLevelController.php 方法 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/99aaa467fea8477a844e7aaa79b52ac4/clipboard.png) 3、修改加盟商 ServicePriceController.php 方法 2019/1/13 晴 月嫂订单评价联动 1、添加路由 // 后台服务订单和评价关联起来 Route::get('/service/order/evaluatios/{order}', 'ServiceOrderEvaluationController@Relation'); ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/d7fc15d98a7f4bc283967ff7fe08a67d/clipboard.png) 2、修改订单视图 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/59da7f80ca744280ae3afec7da6f9e31/clipboard.png) 3、admin下修改ServiceOrderEvaluationController.php方法 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/56c00fa8a07840f39279458f71d3c78c/clipboard.png) 2019/1/18 晴 订单根据定位到加盟商城市进行分配 app\\Http\\Controllers\\Api\\Customer\\ServiceOrderController.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/c4e814fd926043f6a9a416b17fa7697a/clipboard.png) 2019/1/23 晴 加盟商修改 1、先在数据库 tb\_admin\_permissions 中增加加盟商权限 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/2fbc1358974542b98d47ad134c7cbb7f/clipboard.png) 2、添加路由器路径:\\routes\\home.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/dd6c3f01562546dbae8e576eae3e81ca/clipboard.png) 3、添加视图路径:resources\\views\\home\\layouts\\frame.blade.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/8b28a681c4084bc095a8922d250f743d/clipboard.png) 4、添加app\\Http\\Controllers\\Home\\ServantLevelController.php类 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/7c909115914649f592172cfc4ca97976/clipboard.png) 5、添加app\\Http\\Controllers\\Home\\FranchiserController.php类 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/8c8bdbd846b04969a72f1f280b9a20c6/clipboard.png) 6、添加视图文件\\resources\\views\\home\\levelList\\levelList.blade.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/371ae683afa34c5b8b92937b0c38efcf/clipboard.png) 2019/1/26 晴 app中修改电话,加盟商是哪个电话就是那个 1、修改了APP视图 yuesao\_detail.html ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/1e18ca1ef47b4963923bcb49ea8328a4/clipboard.png) 2、增加API路由中新增路由 //获取加盟商手机号 Route::get('/service-phonee/{yui}', 'ServicePhoneController@showphone'); ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/c763a559cece4aa6bdd994900e0afaaf/clipboard.png) 3、新增了方法 app\\Http\\Controllers\\Api\\Common\\ServicePhoneController.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/12f035b901174a98835069125110f39c/clipboard.png) 4、新增了函数方法 app\\Helpers\\functions.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/90430a6907a4411a99e91d1331cfb91f/clipboard.png) 5、在模型中 app\\Models\\Franchiser.php 新增了,要注意会不会出问题 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/11c3e69bfe754277a3a041b7e7be2159/clipboard.png) 2019/1/28 晴 修改了APP列表显示价格 app\\Repositories\\UserServantRepository.php //补丁:批量更新 user\_servant\_profiles 表所在省id //by zgm 2019-1-11 $user\_servant\_profiles\_model\=DB::table('user\_servant\_profiles') \->where('major\_service\_province',0) \->where('major\_service\_city','<>',0) \->where('major\_service\_city','<>',1) \->get(); foreach ($user\_servant\_profiles\_model as $profiles\_temp) { //查到省id $citytemp = DB::table('areas')->where('id', $profiles\_temp\->major\_service\_city)->first(); //执行更新 DB::table('user\_servant\_profiles') \->where('id', $profiles\_temp\->id) \->update(\['major\_service\_province' => $citytemp\->parentid\]); //\\Log::info('更新了用户:'.$profiles\_temp->real\_name.'城市id'.$profiles\_temp->major\_service\_city.'下面的省id是:'.$citytemp->parentid); } //补丁结束 //查询目的是为了得到省id 开始 $province\_id\_temp\=0; $franchisers\_model\_temp\=DB::table('franchisers') \->where('id',$franchiser\_id) \->first(); if (!empty($franchisers\_model\_temp)) {//如果查出结果 $province\_id\_temp\=$franchisers\_model\_temp\->city\_id; } //查询目的是为了得到省id 结束 $servants = DB::table('user\_servant\_profiles as pro') \->join('servant\_levels as l', 'pro.servant\_level\_id', '=', 'l.id') \->join('service\_prices as pri', 'pri.servant\_level\_id', '=', 'l.id') \->where($where) \->where('pri.baby\_number', 1) \->where('pri.servant\_type', $type) \->where('pri.city\_id',$province\_id\_temp);//后添加的 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/22e63fb30b3e4456b87b82dc32c0db1f/clipboard.png) 2019/1/28 晴 修改月嫂内容价格 1、在APP中获取当前加盟商id ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/8548eaa432244d6f8534c623258541e8/clipboard.png) 2、在routes\\api.php路由中修改 Route::get('/user/servants/{user}/{city}', 'ServantController@show'); ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/335bbd57bf6a4dd398ca90a8ed571bb7/clipboard.png) 3、修改app\\Http\\Controllers\\Api\\Customer\\ServantController.php方法 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/f605bef9cba544d2aa0cf2df772819e1/clipboard.png) 4、修改数据库查询条件app\\Repositories\\UserServantRepository.php方法 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/9d2b9077081f40c995be3177b01976c8/clipboard.png) 九、登录修改app\\Http\\Controllers\\Api\\Common\\SignInController.php,修改方法 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/d312b76344ce4acfac824a2ca5c83a10/clipboard.png) 2019/2/20 晴 修改搜索 app\\Repositories\\UserServantRepository.php ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/9105216a43c647678c35d5716424ccff/clipboard.png) 2019/2/26 晴 订单数据加载到一定数量点不了 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/7ce5cbc517b849d2a4fbdc25d4b1063b/clipboard.png) 住家月子服务(天) 价格是由服务天数乘于一天价格获取。 证书的 select c.updated\_at,p.employee\_number,p.real\_name,p.contact\_phone,group\_concat(ci.`name`),group\_concat(c.approval\_status) from tb\_user\_servant\_profiles p,tb\_user\_servant\_credentials c, tb\_servant\_credentials ci where p.user\_id=c.user\_id and ci.id=c.servant\_credential\_id GROUP BY p.employee\_number ORDER BY c.updated\_at DESC 2019/2/26 晴 统一上传至服务器 ![](C:/Users/SZX/AppData/Local/YNote/data/weixinobU7Vji0rZ5AH9flAzpfjo68EVu0/f82e69b25d1b4900851979a306ac125f/clipboard.png)