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. ...
随机推荐
- Spring cloud微服务安全实战-5-9实现基于session的SSO(Token有效期)
token的有效期 会出现一种情况session有效期还没到.但是token过期了. 用户登陆着,但是token失效了 没法访问服务了. 刷新令牌要和clientId和ClientSecret一起用, ...
- Linux记录-批量安装LNMP(转载)
#!/bin/bash # Describe: This is a one - button installation service script # 提示:使用此脚本时,尽量先选择第一项配置Yum ...
- Laya的动画制作,整图动画,序列图动画,时间轴动画,龙骨动画
参考: Laya动画基础 Egret帧动画工具类 版本:2.1.1.1 序列图动画 白鹭的序列图动画,使用TexureMerger合图,然后使用MovieClip类播放. Laya的话,使用图集打包工 ...
- Python - Django - 装饰器版的登陆校验
urls.py: from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^login/', vi ...
- LeetCode_202. Happy Number
202. Happy Number Easy Write an algorithm to determine if a number is "happy". A happy num ...
- Python3 IO编程之操作文件和目录
如果我们要操作文件,目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如ls,cp等命令 如果要在python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令指示简单地调用了操作系 ...
- Error: python-devel conflicts with python-2.7.5-68.el7.x86_64
yum install yum-utils -y package-cleanup --cleandupes yum -y install python-devel yum -y install pyt ...
- 《构建之法》——GitHub和Visual Studio的基础使用
git地址 https://github.com/microwangwei git用户名 microwangwei 学号后五位 62214 博客地址 https://www.cnblogs.com/w ...
- pytorch1.0实现RNN for Regression
import torch from torch import nn import numpy as np import matplotlib.pyplot as plt # 超参数 # Hyper P ...
- [转帖]nginx基础整理
nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...