ThinkPHP5使用模型进行增删改查操作

本文展示了在ThinkPHP框架下,如何在管理员后台实现增删改查操作。代码示例包括模型`FrieslandtravelReason.php`中的各种操作方法,如添加、修改、软删除等,并在控制器`Reason.php`中调用这些方法。强调了模型内只应包含基本的数据操作,逻辑处理应在控制器中完成。
摘要由CSDN通过智能技术生成

将会持续更新…

控制器位置 application/admin/controller/frieslandtravel/Reason.php
模型位置 application/admin/model/FrieslandtravelReason.php

注意模型里面只能写增删改查操作 其他逻辑不要写在里面

模型命名方式
在这里插入图片描述
开始代码示例
model【FrieslandtravelReason.php】代码示例

<?php
namespace app\admin\model;
use think\Model;
class FrieslandtravelReason extends Model
{
    // 表名 没有前缀的
    protected $name = 'frieslandtravel_reason';

    //protected $pk = 'name'; //get 查询时的默认主键 $this->get(123);

    const AA = '123'; //自定义常量`在这里插入代码片`
    /**
     * 添加
     */
    public  function model_insert(){
        $post_data = $_POST;
        $data = [
            'reason_name' => $post_data['reason_name'],
            'state' => $post_data['state'],
            'orderby' => $post_data['orderby'],
            'create_user' => $_SESSION['think']['admin']['username'],
        ];
        return $this->save($data);
    }

    /**
     * 修改
     */
    public  function model_save(){
        $post_data = input();
        //修改数据
        $data = [
            'reason_name' => $post_data['reason_name'],
            'state' => $post_data['state'],
            'orderby' => $post_data['orderby'],
            'update_user' => $_SESSION['think']['admin']['username'],
            'update_time' => date("Y-m-d H:i:s",time())
        ];
        //修改条件
        $where['id'] = $post_data['ids'];
        return $this->save($data,$where);
    }
    /**
     * 软删除修改
     */
    public  function model_del(){
        $post_data = input();
        //修改数据
        $data = [
            'state' => -1,
            'update_user' => $_SESSION['think']['admin']['username'],
            'update_time' => date("Y-m-d H:i:s",time())
        ];
        //修改条件
        $where['id'] = array('in',$post_data['ids']);
        return $this->save($data,$where);
    }

    /**
     * 查询单条数据
     * $param $field 字段名字
     * $param $field_value 字段值
     */
    public function model_find($field,$field_value){
            return $obj = self::where([$field=>array('in',$field_value)])->find();
//            dump($obj->id);die;
//            return (self::where([$field=>array('in',$field_value)])->find())->data; //不能直接获取对象里面的date 万一对象里面为空 则会报错

    }

    /**
     * 添加-根据某个字段判断重复
     */
    public function model_add_repeat(){
            $post_data = $_POST;
            // collection(
            //self::where($field, $field_value)->select()
            //)->toArray()必须将结果集转换为数组
            //多个where条件 加 ->where()
            return self::where([
                'reason_name'=>$post_data['reason_name'],
                'state' => array('neq',-1)
            ])->count();
    }

    /**
     * 修改-根据某个字段判断重复
     */
    public function model_update_repeat(){
        $post_data = input();
        // collection(
        //self::where($field, $field_value)->select()
        //)->toArray()必须将结果集转换为数组
        //多个where条件 加 ->where()
        return self::where([
            'id'=>array('neq', $post_data['ids']),
            'reason_name'=>$post_data['reason_name'],
            'state' => array('neq',-1)
        ])->count();
    }

}

控制器【Reason.php】代码示例

说明
引用模型有两种方式
第一种

use app\admin\model\FrieslandtravelReason;
use think\model;
class Reason extends Base
{
//注意下面这个注注释必须有
    /**
     * @var \app\admin\model\FrieslandtravelReason
     */
     protected $model = null; //要定义一个全局变量

    public function _initialize()
    {
        parent::_initialize();
        $this->model = model('FrieslandtravelReason');
    }
    //调用
    public function add(){
    	$this->model->model_add_repeat()
    }

第二种

use app\admin\model\FrieslandtravelReason;
class Reason extends Base
{
//注意下面这个注注释必须有
    /**
     * @var \app\admin\model\FrieslandtravelReason
     */
    //调用
     public function add(){
     	$aa = new FrieslandtravelReason();
    	$aa->model_add_repeat()
    }
<?php
namespace app\admin\controller\frieslandtravel;

use app\admin\controller\frieslandtravel\Base;

use app\admin\model\FrieslandtravelReason;
use think\model;
class Reason extends Base
{
    /**
     * @var \app\admin\model\FrieslandtravelReason
     */
    protected $model = null;

    public function _initialize()
    {
        parent::_initialize();
        $this->model = model('FrieslandtravelReason');
    }

    /**
     * 添加
     */
    public function add()
    {
        if ($this->request->isPost()) {
            $post_data = $_POST;

            $repeat_res = $this->model->model_add_repeat();
            if ($repeat_res > 0) {
                $this->error('出差事由名称不能重复'); //跳转失败
            }
            $insert_res = $this->model->model_insert($_POST);
            if($insert_res){
                $this->success('添加成功');
            }else{
                $this->error('添加失败'); //跳转失败
            }
        }
        return $this->view->fetch();
    }
    /**
     * 编辑
     */
    public function edit($ids = NULL)
    {
        if ($this->request->isPost()) {
            $post_data = input();
            $repeat_res = $this->model->model_update_repeat();
            if ($repeat_res > 0) {
                $this->error('出差事由名称不能重复'); //跳转失败
            }
            $save_res = $this->model->model_save();
            if($save_res){
                $this->success('修改成功');
            }else{
                $this->error('修改失败'); //跳转失败
            }
        }


        $row = $this->model->model_find('id',$ids);
        if (!$row) $this->error(__('无数据'));
        $this->view->assign("row", $row);
        return $this->view->fetch();
    }

    /**
     * 删除
     */
    public function del($ids = "")
    {
        if ($ids) {
            $row = $this->model->model_del();
            if($row){
                $this->success('删除成功');
            }else{
                $this->error('删除失败'); //跳转失败
            }
        }
        $this->error(__('You have no permission'));
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值