图书表模型的增删查改操作

Original 2019-05-11 23:26:09 529
abstract:一、创建表的SQL语句-- Adminer 4.7.1 MySQL dumpSET NAMES utf8;SET time_zone = '+00:00';SET foreign_key_checks = 0;SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';DROP DATABASE IF EXISTS `shop`;CREATE DA

一、创建表的SQL语句

-- Adminer 4.7.1 MySQL dump

SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

DROP DATABASE IF EXISTS `shop`;
CREATE DATABASE `shop` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `shop`;

DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
 `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '图书id',
 `name` varchar(255) NOT NULL COMMENT '图书名称',
 `price` int(255) NOT NULL COMMENT '图书单价',
 `company` varchar(255) NOT NULL COMMENT '出品该图书的公司名称',
 `delete_time` int(12) NOT NULL COMMENT '删除图书信息时间戳',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `product` (`id`, `name`, `price`, `company`, `delete_time`) VALUES
(1, '纯牛奶', 83, '蒙牛', 1557586982),
(2, '清华大学', 85, '汇源', 0),
(3, '纸巾', 100, '恒安', 0),
(4, '铅笔', 82, '晨光', 0)
ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `name` = VALUES(`name`), `price` = VALUES(`price`), `company` = VALUES(`company`), `delete_time` = VALUES(`delete_time`);

-- 2019-05-11 15:22:05

QQ图片20190511232347.png

二、程序代码

<?php

namespace app\index\controller;

use think\Controller;
use app\index\model\Product as productModel;//设置模型类的别名

class Product extends Controller
{
//1.添加图书信息
   public function instance(productModel $product)//依赖注入
   {
//        $product = new productModel();//     实例化模型
       dump($product->getName());//查看模型名称
       $product->id = 6;
       $product->name = '《php从入门到精通》';
       $product->price = 30;
       $product->company = '清华大学出版社';
       $product->save();
       return '新增成功,id=' . $product->id;
   }

//2.查询图书信息
   public function query()
   {
//        1.单条记录:get(主键/闭包)
//        闭包:就是一个匿名回调函数
//        $product = productModel::get(2);
//        dump($product);
//(1)用闭包来创建查询条件
//        $product = productModel::get(function ($query) {
//            $query->where('id', '>', 1)
//                ->where('price', '>', 1)
//                ->select();
//        });
//        dump($product);
//        直接调用Db静态类的查询构造器进行查询
//        $product=productModel::where('price', '>', 1)
//                ->select();
// (2)多条记录查询:all(主键列表/闭包)
//        返回值是多个数组
//        $product=productModel::all(
//            function($query) {
//                $query->where('id', '>', 1)
//                    ->where('price', '>', 1);
//        });
////        dump($product);
//        foreach ($product as $value){
//        echo '编号:'.$value->id.'<br>';
//        echo '价格:'.$value->price.'<hr>';
//    }
//  (3)采用闭包来实现将请求变量注入到闭包条件中
       $id = $this->request->param('id') ?: 1;
       $price = $this->request->param('price') ?: 1;
       $product = productModel::all(function ($query) use ($id, $price) {
           $query->where('id', '>', $id)
               ->where('price', '>', $price);
       });
       dump($product);
   }

//3.更新图书信息
   public function update()
   {
//基于查询的,不允许无条件更新
//$product=productModel::get(2);
//$product->name='北京大学';
//$product->save();
//静态方法:update();
       productModel::update(['name' => '《考研660题》'], ['id' => 2]);
       productModel::update(['price' => \think\Db::raw('price-5')],
           function ($query) {
               $query->where('price', '<', 15000);
           });
//        也可以用查询构造器来更新数据
//        productModel::where('price', '<', 100000)
//            ->data(['price' => \think\Db::raw('price+50')])
//            ->update();
   }

//4.硬删除图书信息
   public function delete()
   {
//        destroy(主键/主键列表/闭包)
       productModel::destroy(6);
//删除条件使用闭包
       productModel::destroy(function ($query) {
           $query->where('id', '=', 6);
       });
//        查询构造器实现删除
       productModel::where('id', '=', 6)->delete();
   }

//5.软删除图书信息:必须在模型中进行配置
   public function softDelete()
   {
//        productModel::destroy(1);
//    软删除在平台查询中不可见
       $res = productModel::withTrashed()->where('id = 1')->select();
       dump($res);
   }
}

Correcting teacher:查无此人Correction time:2019-05-13 09:45:01
Teacher's summary:完成的不错。后台cms管理的功能都是一样的逻辑。要好好练习,继续加油。

Release Notes

Popular Entries