亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

數(shù)據(jù)庫(kù)的增刪改查操作練習(xí)

??? 2019-04-17 22:15:55 357
????:<?php /**  * Created by PhpStorm.  * User: Administrator  * Date: 2019/4/15  * Time: 19:31  */ //控制器名稱和模型及數(shù)據(jù)庫(kù)同名稱 namespace&nbs
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/4/15
 * Time: 19:31
 */

//控制器名稱和模型及數(shù)據(jù)庫(kù)同名稱
namespace app\index\controller;

use think\Controller;         //引入控制器
use app\index\model\Staff as StaffModel;
use think\model\concern\SoftDelete;    //導(dǎo)入模型,發(fā)現(xiàn)模型和控制器名稱重名,別名處理:Staff as StaffModel

class Staff extends Controller
{
    //實(shí)例化模型
    public function instance(StaffModel $staff)  //依賴注入
    {
//        $staff = new StaffModel();     //模型實(shí)例化

        dump($staff->getName());      //查看模型名稱

        //新增一條記錄
        $staff ->name = '學(xué)習(xí)';
        $staff ->sex = 0;
        $staff -> age =36;
        $staff ->salary = 5000;

        //新增操作
        $staff -> save();

        return '新增成功,id='.$staff->staff_id;

        //實(shí)際開(kāi)發(fā)中,都是用靜態(tài)方法完成模型操作的

    }

    //模型查詢
    public function query()
    {
        //1.單條記錄:get(主鍵/閉包)
        //閉包就是匿名回調(diào)函數(shù),將函數(shù)作為參數(shù)進(jìn)行傳遞

        //通過(guò)查詢來(lái)創(chuàng)建模型
        $staff = StaffModel::get(2);
        dump($staff);        //系統(tǒng)預(yù)處理查看數(shù)組
        echo '<hr>';
        \var_dump($staff);   //調(diào)用系統(tǒng)函數(shù)查看顯示對(duì)象
        echo '<hr>';

        echo $staff['name'],'<br>';  //用數(shù)組的方式獲取值
        echo $staff->name,'<br>';    //用對(duì)象的方式獲取值

        //用閉包來(lái)查詢條件
        $staff = StaffModel::get(function ($query){
            $query->where('sex',0)->where('salary','>','7000');
        });

        echo '性別為男,工資大于8000的數(shù)據(jù):';
        dump($staff);
        echo '<hr>';

        //直接靜態(tài)調(diào)用Db類的查詢構(gòu)造器進(jìn)行查詢
//        StaffModel == Db::table('staff')
        StaffModel::where('sex',0)
            ->where('salary','>',8000)
            ->find();

        dump($staff);
        echo '<hr>';


        //2.多條記錄的查詢:all(主鍵列表/閉包)
        //返回值是多維數(shù)組/對(duì)象數(shù)組

//        $staff = StaffModel::all();       //查詢到所有數(shù)據(jù): SELECT * FROM `staff`
//        $staff = StaffModel::all([1,2,3]);  //獲取到的是主鍵等于1,2,3的3條數(shù)據(jù): SELECT * FROM `staff` WHERE `staff_id` IN (1,2,3)


//        $staffs = StaffModel::all(function ($query)
//        {
//            $query->where('age','<',40)
//                ->where('salary','<',6000);
//        });     // SELECT * FROM `staff` WHERE `age` < 40 AND `salary` < 6000
//        dump($staffs);

        //用foreach遍歷
//        foreach ($staffs as $staff)
//        {
//            echo '姓名:'.$staff->name.'<br>';
//            echo '性別:'.$staff->sex.'<br>';
//            echo '年齡:'.$staff->age.'<br>';
//            echo '工資:'.$staff->salary.'<hr>';
//        }

        //采用閉包將變量注入到閉包條件中
//        $this->request === new \think\facade\Request;   //請(qǐng)求對(duì)象

        $age = $this->request->param('age') ? : 40;
        $salary = $this->request->param('salary') ? : 5000;

        $staffs = StaffModel::all(function ($query) use ($age,$salary)
        {
            $query->where('age','<',$age)
                ->where('salary','<',$salary);
        });

//用foreach遍歷
//        foreach ($staffs as $staff)
//        {
//            echo '姓名:'.$staff->name.'<br>';
//            echo '性別:'.$staff->sex.'<br>';
//            echo '年齡:'.$staff->age.'<br>';
//            echo '工資:'.$staff->salary.'<hr>';
//        }

        dump($staffs);

    }

    //模型更新
    public function update(){
        //基于前置條件查詢的,不允許無(wú)條件更新

//        $staff =StaffModel::get(3);   //條件查詢出數(shù)據(jù)
//        $staff ->name = '無(wú)忌哥哥';         //更新字段內(nèi)容
//        $staff ->save();                   //私有方法,將數(shù)據(jù)寫回到數(shù)據(jù)庫(kù)
        //建議用靜態(tài)方法:update(數(shù)據(jù),條件,字段)
        StaffModel::update(
            ['name'=>'張無(wú)忌'],
            ['staff_id'=>3]
        );

        //復(fù)雜更新
        //將年齡大于50的都加500
//        StaffModel::update(
//            ['salary'=>\think\Db::raw('salary+500')],
//            function ($query){
//                $query->where('age','>=',50);
//            }
//        );
        //也可以使用查詢構(gòu)造器來(lái)更新數(shù)據(jù)
        StaffModel::where('age','>',50)
            ->data(['salary'=>\think\Db::raw('salary+500')])
            ->update();
    }

    //創(chuàng)建模型:添加數(shù)據(jù)
    public function create()
    {
        //1.save()
        //2.create(數(shù)據(jù),字段)
        $data =[
            'name'=>'孫唐22',
            'sex'=>0,
            'age'=>999,
            'salary'=>8888
        ];

//        $field = ['name','sex','age','salary'];
//        $field = ['name','sex'];
//        StaffModel::create($data,$field);  //不允許添加的數(shù)據(jù)會(huì)調(diào)用默認(rèn)值

        //3.用查詢構(gòu)造器來(lái)插入數(shù)據(jù)
        StaffModel::insert($data);

    }

    //模型刪除:刪除記錄
    public function delete()
    {
        //destroy(主鍵/主鍵列表/閉包)
//        StaffModel::destroy(32);  //先查詢?cè)賱h除2條sql語(yǔ)句
//        StaffModel::destroy([1,5,6]);  //先查詢?cè)賱h除2條sql語(yǔ)句

        //刪除條件推薦使用閉包
        StaffModel::destroy(function ($query){
            $query->where('age','>',55)
                ->where('salary','>=',5000);
        });
        //執(zhí)行結(jié)果: SELECT * FROM `staff` WHERE `age` > 55 AND `salary` >= 5000

        //查詢構(gòu)造器實(shí)現(xiàn)刪除
        StaffModel::where('age','>',50)
            ->delete();
        //DELETE FROM `staff` WHERE `age` > 50
    }

    //軟刪除:必須在模型中進(jìn)行配置,用更新模擬刪除
    public function softDelete()
    {
//        StaffModel::destroy(29);

        //軟刪除在普通查詢中不可見(jiàn)
//        $res =StaffModel::where('staff_id < 5')->select();

        //查看含有被軟刪除的記錄
//        $res =StaffModel::withTrashed()->where('staff_id < 5')->select();
        //查看已被軟刪除的記錄
        $res =StaffModel::onlyTrashed()->select();
        dump($res);
    }

    //軟刪除的記錄的恢復(fù)
    public function softRestore(){
        $res = StaffModel::onlyTrashed()->find(29);
        $res->restore();
        //執(zhí)行結(jié)果SQL:UPDATE `staff` SET `delete_time` = 0 WHERE ( `staff_id` = 28 ) AND `delete_time` <> 0

    }
    
}

    數(shù)據(jù)庫(kù)查詢操作是基礎(chǔ),更新和刪除必須要有前置查詢條件,刪除操作一般都用軟刪除來(lái)更新到回收站,在回收站再用物理刪除徹底刪除。

?? ???:查無(wú)此人?? ??:2019-04-18 09:47:24
???? ??:完成的不錯(cuò)。數(shù)據(jù)庫(kù)一般是不刪除數(shù)據(jù)的,所有數(shù)據(jù)都要保留。繼續(xù)加油。

??? ??

?? ??