准备工作:见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的更多相关文章

  1. 《PHP框架Laravel学习》系列分享专栏

    <PHP框架Laravel学习>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201735.html 文章 Laravel教程:l ...

  2. PHP框架 Laravel Eloquent ORM 批量插入数据 && 批量更新目前没有

    foreach ($products as $v=>$a) { $count[] = array('product_name' => $a['name'], 'product_weight ...

  3. PHP框架 Laravel

    PHP框架 CI(CodeIgniter) http://www.codeigniter.com/ http://codeigniter.org.cn/ Laravel PHP Laravel htt ...

  4. PHP 框架Laravel Eloquent 实现身份验证

    PHP自从5.3后似乎又热度又回升, 最近了解了一下PHP框架之一Laravel, 最近最新的版本已经是4.3  基本的结构这里不讲, 要了解可以在这里看文档 http://v4.golaravel. ...

  5. PHP开源框架Laravel的安装与配置

    编将带领大家一步步在Windows 7平台下搭建该框架: 工具/原料   windows 7 Composer Laravel最新框架 方法/步骤   1 安装composer.安装之前要确保目录:w ...

  6. php框架laravel:数据库建立:artisan

    aravel 迁移是一种数据库的版本控制.迁移通常和 结构生成器 配对使用来管理您应用程序的数据库结构. 配置数据库 我们安装wamp,并且使用mysql方式.用wamp自带的phpMyAdmin添加 ...

  7. composer的create-project安装php框架laravel for mac教程

    通过 Composer 的 create-project 命令安装 Laravel 通过在命令行执行 Composer 的 create-project 命令来安装Laravel: composer ...

  8. 学习新框架laravel 5.6 (第一天)

    学习新框架第一天. composer 基本命令: composer list 获取帮助信息 composer init 以交互方式填写composer.json文件信息 composer instal ...

  9. 浅析PHP框架Laravel最新SQL注入漏洞

    PHP知名开发框架Laravel,之前在官方博客通报了一个高危SQL注入漏洞,这里简单分析下. 首先,这个漏洞属于网站coding写法不规范,官方给了提示: 但官方还是做了修补,升级最新版本V5.8. ...

随机推荐

  1. 解决:error: Cannot find libmysqlclient_r under /usr/local/mysql.

    libodb-mysql-2.4.0.tar.gz 解压完安装libodb-mysql时,执行完./cofigure后,出现如下错误: checking for libmysqlclient_r... ...

  2. 《楞严经四种清净明诲》 (转自学佛网:http://www.xuefo.net/nr/article56/559965.html)

    <楞严经四种清净明诲> 佛告阿难:“汝常闻我毗奈耶中,宣说修行三决定义.所谓摄心为戒,因戒生定,因定发慧,是则名为三无漏学. “阿难,云何摄心,我名为戒? “若诸世界六道众生其心不淫,则不 ...

  3. 一个php创建webservice,并通过c#调用的真实实例(转)

    https://www.cnblogs.com/sequh/archive/2015/09/18/4819832.html 最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜 ...

  4. xps转换为pdf

    https://www.cnblogs.com/zeoy/archive/2013/01/09/2852941.html https://blog.csdn.net/jafucong/article/ ...

  5. ubuntu 18.04使用sysbench测试MySQL性能

    首先下载安装sysbench: sudo apt-get install sysbench -y 查看一下sysbench版本是多少: zifeiy@zifeiy-S1-Series:~$ sysbe ...

  6. jquery创建一个新的节点对象(自定义结构/内容)的好方法

    jq创建一个新的节点对象,这对一些自定义功能很有帮助,而且可以随意控制对象的结构与内容,何乐而不为呢,看到这里,相信有些朋友已经按耐不住了,好记下来为大家介绍实现方法,感兴趣的朋友可以了解下哦 < ...

  7. HTML:给body增加全屏的背景图

    只需要在head中增加如下代码即可 <head> {#设置背景#} <style> body { height: 100%;width: 100%; background: u ...

  8. Appium移动自动化测试-----(九) appium API 之应用操作

    1.安装应用 方法: installApp() 安装应用到设备中去.需要apk包的路径. driver.installApp("path/to/my.apk"); driver.i ...

  9. va_start(),va_end()函数应用

    原理解释: VA_LIST 是在C语言中解决变参问题的一组宏,在<stdarg.h>头文件下. VA_LIST的用法:            (1)首先在函数里定义一具VA_LIST型的变 ...

  10. [C#] - 从 HTML 代码中 转换 / 提取 可读文字(PlainText)的方法

    背景 在做网页数据分析的时候,我们关注的部分是内容,可以过滤掉HTML标签.Javascript.CSS等代码. 目标输入 <b>Hello World.</b><br/ ...