php框架——laravel
准备工作:见php语法篇末尾环境部署
一、【创建一个表+插入数据】:手动创建或者执行sql语句
DROP TABLE IF EXISTS `tb_business`;
CREATE TABLE IF NOT EXISTS `tb_business` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`category_id` int(10) UNSIGNED DEFAULT NULL COMMENT '品类id(tb_category)',
`ename` varchar(64) NOT NULL COMMENT '英文名',
`cname` varchar(64) NOT NULL COMMENT '中文名',
PRIMARY KEY (`id`),
UNIQUE KEY `business_cname_unique` (`cname`),
UNIQUE KEY `business_ename_unique` (`ename`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '业务数据';
// 注意:// 如果主键设置了自增 末尾不必再设置AUTO_INCREMENT 或者 AUTO_INCREMENT = 0
INSERT INTO `tb_business` (`category_id`, `ename`, `cname`) VALUES
(1, 'lol', '英雄联盟'),
(7, 'sugar', '糖罐');
二、【新建路由、获取请求参数、中间件处理逻辑、sql表db数据操作等文件】:
Route::post('activityType/get', 'ProjectController\ActivityType\ActivityType@getActivityType');//活动列表
<?php
namespace App\Http\Controllers\ProjectController\BusinessManage;//命名空间
use App\Http\Controllers\ProjectModel\BusinessManage\BusinessList;//间接操作
use App\Http\Controllers\ProjectModel\JsonRequest; //获取请求参数 class BusinessInfo
{
//构建实例
private $json_request;
private $businessInfo;
public function __construct()
{
// $this->json_request = new JsonRequest();//废弃
$this->json_request = resolve(JsonRequest::class);
$this->businessInfo = new BusinessList();//统一请求,定义在Database外部
} //获取
public function getBusinessInfo()
{
$res = $this->businessInfo->getTbBusinessInfo();
return response()->success($res);
}
//查询某个业务
public function searchBusinessInfo()
{
$id = $this->json_request->get('id');
$res = $this->businessInfo->searchTbBusinessInfo($id);
return response()->success($res);
} //新建
public function addBusinessInfo()
{
$category_id = $this->json_request->get('category_id');
$ename = $this->json_request->get('ename');
$cname = $this->json_request->get('cname');
$res = $this->businessInfo->addTbBusinessInfo($category_id,$ename,$cname);
return response()->success($res);
}
//更新
public function updateBusinessInfo()
{
$id = $this->json_request->get('id');
$category_id = $this->json_request->get('category_id');
$ename = $this->json_request->get('ename');
$cname = $this->json_request->get('cname');
$res = $this->businessInfo->updateTbBusinessInfo($id,$category_id,$ename,$cname);
return response()->success($res);
}
//删除
public function delBusinessInfo()
{
$id = $this->json_request->get('id');
$res = $this->businessInfo-> delTbBusinessInfo($id);
return response()->success($res);
}
}
<?php
namespace App\Http\Controllers\ProjectModel\BusinessManage;
use App\Http\Controllers\ProjectModel\BusinessManage\Database\TbBusinessInfo;
use App\Http\Controllers\ProjectModel\ActivityManage\Logic\ActivityList;
use App\Http\Controllers\ProjectModel\Common\Protocol\Errors\Logic\Error;
class BusinessList { private $tbBusinessInfo; public function __construct()
{
$this->tbBusinessInfo = new TbBusinessInfo();
} /**
* 获取
* @param string
* @return array
**/
public function getTbBusinessInfo()
{
$info = $this->tbBusinessInfo->getBusinessInfo();
return $info;
}
/**
* 查询
* @param string
* @return array
**/
public function searchTbBusinessInfo($business_id)
{
$info = $this->tbBusinessInfo->searchBusinessInfo($business_id);
return $info;
}
/**
* 新增
* @param string
* @return array
**/
public function addTbBusinessInfo($category_id,$business_ename,$business_cname)
{
$info = $this->tbBusinessInfo->addBusinessInfo($category_id,$business_ename,$business_cname);
return $info;
}
/**
* 更新
* @param string
* @return array
**/
public function updateTbBusinessInfo($business_id,$category_id,$business_ename,$business_cname)
{
$info = $this->tbBusinessInfo->updateBusinessInfo($business_id,$category_id,$business_ename,$business_cname);
return $info;
} /**
* 删除
* @param string
* @return array
**/
public function delTbBusinessInfo($business_id)
{
$activityClass = resolve_class(ActivityList::class);
$activityList = $activityClass::search(["activity.business.id"=>$business_id]);
if ( !$activityList->isEmpty() ) {
throw new Error("有活动引用,需要先删除活动");
}else{
return $this->tbBusinessInfo->delBusinessInfo($business_id);
}
}
}
?>
放在Database文件夹的文件才是操作表数据的直接操作:写法就是laravel中的Eloquent的类封装
Eloquent: 关联
https://learnku.com/docs/laravel/5.7/eloquent-relationships/2295
<?php
namespace App\Http\Controllers\ProjectModel\BusinessManage\Database;
use App\Http\Controllers\ProjectModel\Common\Database\EloBusinessBaseDatabase; //父类
class TbBusinessInfo extends EloBusinessBaseDatabase {
//表名
protected $table = "tb_business"; //主键名
protected $primaryKey = "id"; //主键是自增id
public $incrementing = true; //所有字段可以批量修改
protected $guarded = []; /**
* 获取业务信息
* @param int
* @return array
**/
public function getBusinessInfo()
{
return static::all();
}
/**
* 查询
* @param int
* @return array
**/
public function searchBusinessInfo($business_id)
{
if(!$business_id){
return "参数不可为空";
} else {
return static::where("id", $business_id)->first();
}
}
/**
* 添加业务信息
* @param int
* @return array
**/
public function addBusinessInfo($category_id,$business_ename,$business_cname)
{
$info = [];
$info["category_id"] = $category_id;
$info["ename"] = $business_ename;
$info["cname"] = $business_cname;
if(!$category_id || !$business_ename || !$business_cname){
return "请求参数不全";
} else {
return static::create($info)
}
}
/**
* 更新
* @param int id
* @return object
**/
public function updateBusinessInfo($business_id, $category_id,$business_ename,$business_cname)
{
$info = [];
$info["id"] = $business_id;
$info["category_id"] = $category_id;
$info["ename"] = $business_ename;
$info["cname"] = $business_cname;
if(!$business_id || !$category_id || !$business_ename || !$business_cname){
return "请求参数不全";
} else {
return static::where( "id", $business_id)->update($info);
}
}
/**
* 删除业务信息
* @param int
* @return array
**/
public function delBusinessInfo($business_id)
{
if(!$business_id){
return "参数不可为空";
} else {
return static::where( "id", $business_id)->delete();
}
}
}
?>
以下是常用表操作方法总结:
<?php
namespace App\Http\Controllers\ProjectModel\BusinessInfo\Database;
use App\Http\Controllers\ProjectModel\Common\Database\EloBusinessBaseDatabase; //父类
class TbBusinessInfo extends EloBusinessBaseDatabase {
//表名
protected $table = "tb_business"; //主键名
protected $primaryKey = "id"; //主键是自增id
public $incrementing = true; //所有字段可以批量修改
protected $guarded = []; /**
* 获取业务信息
* @param int
* @return array
**/
public function getBusinessInfo()
{
// return static::all();// 不能与where()共存
return static::all()->groupBy('category_id');// 分组返回
// return static::select('cname')->get();// 只返回某些字段
// return static::distinct()->get();//去重返回
// return static::count();// 返回总条数,max('xxx')某参数最大,min最小, avg平均,还有 sum求和
// return static::orderBy('cname')->get();// 排序返回
// return static::pluck('cname');// 返回指定内容index:value;或者(value,key)如:lol:英雄联盟
// return static::get();// 可以与where()共存
// return static::first();// 获取第一条
}
/**
* 查询业务信息
* @param int
* @return array
**/
public function searchBusinessInfo($id)
{
if ($id){
return static::where("category_id", $id)->get();//->first();返回指定范围where()
// return static::where([ //多个条件
// ['status', '=', '1'],
// ['subscribed', '<>', '1'],
// ])->get();
// return static::select(static::raw('count(*) as user_count, status')); //原生表达式:DB::raw
// return static::->selectRaw('price * ? as price_with_tax', [1.0825]); //selectRaw()方法:
// return static::->whereRaw('price > IF(state = "TX", ?, 100)', [200]); //绑定参数的数组
// return static::->havingRaw('SUM(price) > ?', [2500]); //是否
// return static::->orderByRaw('updated_at - created_at DESC');
// return static::where("id", $id)->value('cname');//直接返回某个字符串
// return static::select("category_id", "cname")->where("category_id", $id)->orderBy('cname')->take(10)->get();
// return static::select("id", "ename", "cname")->where("id", $id)->get();
// return static::where("category_id", $id)->get()->map(function ($item){
// $item->data = '王者荣耀666';
// return $item;
// });
// return static::findOrFail($id);
}else{
return null;
}
}
/**
* 添加业务信息
* @param int
* @return array
**/
public function addBusinessInfo($category_id,$business_ename,$business_cname)
{
$info = [];
$info["category_id"] = $category_id;
$info["ename"] = $business_ename;
$info["cname"] = $business_cname;
return static::create( $info);// 返回数组
// return static::insert( //插入内容,返回true
//// ['category_id' => $category_id, 'ename' => $business_ename, 'cname' => $business_cname],
// ['category_id' => $category_id, 'ename' => $business_ename, 'cname' => $business_cname]
// );
}
/**
* 添加业务信息
* @param int
* @return array
**/
public function updateBusinessInfo($id,$business_cname)
{
// $info = array(
// "cname" => $business_cname
// );
// $info -> cname = $business_cname;//错误:对象或函数
$info = [];
$info["cname"] = $business_cname;
if(!$id || !$business_cname){
return '参数不全';
}else{
static::where( "id", $id)
// ->update(['votes' => 1]) // 修改某个字符串或数字
// ->update(['options->enabled' => true]) //修改json某个字段
->update($info); // 修改当前行所有参数
return $info;
}
}
/**
* 删除业务信息
* @param int
* @return array
**/
public function delBusinessInfo($business_id)
{
return static::where( "id", $business_id)
// ->truncate() //清空表
// ->where('votes', '>', 100) //限制一个范围
->delete();// 直接删除
}
}
?>
调试问题:连接到本地库,执行PHPstorm的测试文档
<?php
use Tests\TestCase;
use App\Http\Controllers\ProjectModel\BusinessInfo\Database\TbBusinessInfo;
class TestDemo extends TestCase {
public function testBasicTest()
{
$res = new TbBusinessInfo();
$info['error_code'] = '0';
$info['data'] = $res->getBusinessInfo()->toArray();// 使用时不需要转换成简单的数组格式->toArray()
// $info['data'] = $res->searchBusinessInfo('1')->toArray();
// $info['data'] = $res->addBusinessInfo('2','test03','测试03')->toArray();
// $info['data'] = $ai->updateBusinessInfo('1','英雄联盟');
// dd(redirect('tb_business'));// 整个表数据
dd($info);// 打印测试数据
}
}
php框架——laravel的更多相关文章
- 《PHP框架Laravel学习》系列分享专栏
<PHP框架Laravel学习>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201735.html 文章 Laravel教程:l ...
- PHP框架 Laravel Eloquent ORM 批量插入数据 && 批量更新目前没有
foreach ($products as $v=>$a) { $count[] = array('product_name' => $a['name'], 'product_weight ...
- PHP框架 Laravel
PHP框架 CI(CodeIgniter) http://www.codeigniter.com/ http://codeigniter.org.cn/ Laravel PHP Laravel htt ...
- PHP 框架Laravel Eloquent 实现身份验证
PHP自从5.3后似乎又热度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已经是4.3 基本的结构这里不讲, 要了解可以在这里看文档 http://v4.golaravel. ...
- PHP开源框架Laravel的安装与配置
编将带领大家一步步在Windows 7平台下搭建该框架: 工具/原料 windows 7 Composer Laravel最新框架 方法/步骤 1 安装composer.安装之前要确保目录:w ...
- php框架laravel:数据库建立:artisan
aravel 迁移是一种数据库的版本控制.迁移通常和 结构生成器 配对使用来管理您应用程序的数据库结构. 配置数据库 我们安装wamp,并且使用mysql方式.用wamp自带的phpMyAdmin添加 ...
- composer的create-project安装php框架laravel for mac教程
通过 Composer 的 create-project 命令安装 Laravel 通过在命令行执行 Composer 的 create-project 命令来安装Laravel: composer ...
- 学习新框架laravel 5.6 (第一天)
学习新框架第一天. composer 基本命令: composer list 获取帮助信息 composer init 以交互方式填写composer.json文件信息 composer instal ...
- 浅析PHP框架Laravel最新SQL注入漏洞
PHP知名开发框架Laravel,之前在官方博客通报了一个高危SQL注入漏洞,这里简单分析下. 首先,这个漏洞属于网站coding写法不规范,官方给了提示: 但官方还是做了修补,升级最新版本V5.8. ...
随机推荐
- 泡泡一分钟: A Linear Least Square Initialization Method for 3D Pose Graph Optimization Problem
张宁 A Linear Least Square Initialization Method for 3D Pose Graph Optimization Problem "链接:https ...
- 谷歌Chrome浏览器 截取网页长图方法
Chrome浏览器: 1.按F12打开调试页面 2.按下ctrl + shift + p 3.输入命令 Capture full size screenshot 并回车 4.浏览器会自动截取整个网页内 ...
- Linux记录-SVN+Jenkins+jdk+maven自动化集成部署
1.svn部署 yum -y install subversion svnserve --version 查看版本 mkdir -p /usr/app/svn svnadmin create /usr ...
- LeetCode_257. Binary Tree Paths
257. Binary Tree Paths Easy Given a binary tree, return all root-to-leaf paths. Note: A leaf is a no ...
- css文本超出部分省略号&CSS强制换行总结
word-break:break-all单词截断自动换行 word-break:break-all 例如div宽200px,它的内容就会到200px自动换行,如果该行末端有个英文单词很长(congra ...
- IE6/IE7/IE8 JQuery下resize事件执行多次的解决方法
在使用jQuery的resize事件时发现每次改变浏览器的窗口大小时resize时间会执行两次,百度搜索了一下找到一个解决的方法,使用setTimeout来解决这个问题代码如下: var resize ...
- Xmanager教程
简介 Xmanager是市场上领先的PC X服务器,可将X应用程序的强大功能带入Windows环境. 提供了强大的会话管理控制台,易于使用的X应用程序启动器,X服务器配置文件管理工具,SSH模块和高性 ...
- flask 编码问题
在我们的flask项目中,通过表单提交对数据库进行更新的时候,数据提交不成功,提示以下内容: sqlalchemy.exc.InternalError: (pymysql.err.InternalEr ...
- js删除json指定元素
var obj = {‘id’:1, ‘name’:‘张三’}; delete obj.id; // 或者 delete obj[id];
- LeetCode 1022. 从根到叶的二进制数之和(Sum of Root To Leaf Binary Numbers)
1022. 从根到叶的二进制数之和 1022. Sum of Root To Leaf Binary Numbers 题目描述 Given a binary tree, each node has v ...