美文网首页
TP5的三种查询数据库方式

TP5的三种查询数据库方式

作者: 陈智涛 | 来源:发表于2017-05-14 19:31 被阅读0次

方式一:原生sql查询

代码示例:

<?php
/**
 * Created by PhpStorm.
 * User: chenzhitao
 * Date: 2017/5/8
 * Time: 下午2:15
 */

namespace app\api\model;


use think\Db;
use think\Exception;

class Banner
{
    public static function getBannerByID($id){
        $result = Db::query('select * from banner_item where banner_id=?',[$id]);
        return $result;


    }
}

方式二:使用查询构建器

代码示例:

<?php
/**
 * Created by PhpStorm.
 * User: chenzhitao
 * Date: 2017/5/8
 * Time: 下午2:15
 */

namespace app\api\model;


use think\Db;
use think\Exception;

class Banner
{
    public static function getBannerByID($id){
        //1.使用原生sql
//        $result = Db::query('select * from banner_item where banner_id=?',[$id]);
//        return $result;
        //2.使用查询构建器
        /*
         * 链式查询Db::table('banner_item')->where('banner_id','=',$id) 返回查询对象,->select();返回查询结果,
         * 除了select操作还有 find(返回一条数据) update delete insert
         * 对应的where 也分三种,1.表达式where('字段名','表达式','查询条件') 2.数组发 3.闭包。
         */

        // 2.1 表达式法
//        $result = Db::table('banner_item')
//            ->where('banner_id','=',$id)
//            ->select();
//        return $result;
        //2.2 闭包法
        $result = Db::table('banner_item')
            ->where(function ($query) use($id){
                $query->where('banner_id','=',$id);

            })
            ->select();
        return $result;

    }
}

方式三:ORM(Object Relation Mapping) 对象关系映射

使用ORM 查询数据库主要区别就是在写模型的继承think\model类,然后控制器就可以使用model的默认方法来获取数据而不是自己再在模型中专门写一个获取方法
代码示例:

model:

<?php
/**
 * Created by PhpStorm.
 * User: chenzhitao
 * Date: 2017/5/8
 * Time: 下午2:15
 */

namespace app\api\model;


use think\Db;
use think\Model;

class Banner extends Model
{
//    public static function getBannerByID($id){
//        //1.使用原生sql
////        $result = Db::query('select * from banner_item where banner_id=?',[$id]);
////        return $result;
//        //2.使用查询构建器
//        /*
//         * 链式查询Db::table('banner_item')->where('banner_id','=',$id) 返回查询对象,->select();返回查询结果,
//         * 除了select操作还有 find(返回一条数据) update delete insert
//         * 对应的where 也分三种,1.表达式where('字段名','表达式','查询条件') 2.数组发 3.闭包。
//         */
//
//        // 2.1 表达式法
////        $result = Db::table('banner_item')
////            ->where('banner_id','=',$id)
////            ->select();
////        return $result;
//        //2.2 闭包法
//        $result = Db::table('banner_item')
//            ->where(function ($query) use($id){
//                $query->where('banner_id','=',$id);
//
//            })
//            ->select();
//        return $result;
//
//
//
//
//
//    }
}

controller:

<?php
/**
 * Created by PhpStorm.
 * User: chenzhitao
 * Date: 2017/5/7
 * Time: 下午1:49
 */

namespace app\api\controller\v1;
use app\api\validate\IDMustBePositiveInt;
use app\lib\exception\BannerMissException;
use app\api\model\Banner as BannerModel;

class Banner
{
    public function getBanner($id){
         //调用验证器
        (new IDMustBePositiveInt())->goCheck();

//        $banner = BannerModel::getBannerByID($id);
        $banner = BannerModel::get($id);

        if(!$banner){
            throw new BannerMissException();
        }

        return $banner;



    }

}

相关文章

网友评论

      本文标题:TP5的三种查询数据库方式

      本文链接:https://www.haomeiwen.com/subject/mhhntxtx.html