【ThinkPHP】ThinkPHP5 数据模型和关联
in PHP with 0 comment, Views is 65

【ThinkPHP】ThinkPHP5 数据模型和关联

in PHP with 0 comment, Views is 65

Model 模型目录

application          应用目录
|--index             模块目录
   |--controller     控制器目录
      |--Index.php   控制器文件
   |--model          模型目录
      |--User.php    模型文件

/*
Model模型和表映射(表名绑定类名)
User      => tp_user
UserLevel => tp_user_level
*/

User.php(模型文件)

<?php
namespace app\index\model;
use think\Model;

/**
 * user_level表命名:UserLevel(去掉下划线,首字母大写)
 * user表命名: User
 * 数据表主键自动识别,也可以指定:protected $pk = 'id';
 */
class User extends Model {
    // 设置数据表(不含前缀)
    // protected $name = 'user';

    // 设置完整的数据表(包含前缀)
    protected $table = 'tp_user';

    // 设置当前模型的数据库连接
    protected $connection = [
        // 数据库类型
        'type'        => 'mysql',
        // 服务器地址
        'hostname'    => '127.0.0.1',
        // 数据库名
        'database'    => 'thinkphp',
        // 数据库用户名
        'username'    => 'root',
        // 数据库密码
        'password'    => '',
        // 数据库编码默认采用utf8
        'charset'     => 'utf8',
        // 数据库表前缀
        'prefix'      => 'tp_',
        // 数据库调试模式
        'debug'       => false,
    ];
}

Index.php(控制器文件)

<?php
namespace app\index\controller;
use app\index\model\User;

class Index extends Controller {

    public function index() {
        // 静态调用
        $user = User::get(1);  //id=1的数据

        // 实例化模型
        $user = new User;

        $user -> email = '123456@abc.com';

        $user -> mobile = '123456';

        $user -> save();

        /******************** 新增数据 *******************/

        // 数组方式新增数据操作
        $userArr['email'] = '123456@abc.com';

        $userArr['mobile'] = '123456789';

        if ($result = User::create($userArr))
            echo "用户id:{$result -> user_id} 邮件:{$result -> email} 手机:{$result -> mobile}";

        // 批量新增
        $user = new User;

        $list = [
            ['email' => '123456@abc.com', 'mobile' => '123456789'],
            ['email' => 'list@abc.com', 'mobile' => '987654321'],
        ];

        if ($user -> saveAll($list)) echo '用户批量新增成功';

        /******************** 查询数据 *******************/
        // 对象
        $user = User::get(1);

        echo $user -> mobile;

        // 数组
        $user = User::get(1);

        echo $user['mobile'];

        // 根据某个条件查询数据 getByXxxx() 方法(Xxxx可以是数据表存在的任意一个字段)
        $user = User::getByMobile('123456');  // mobile = 123456 的数据

        echo $user['mobile'];

        // 不根据主键查询
        $user = User::get(['mobile' => '123456', 'email' => '123456@abc.com']);

        $user = User::where('mobile', '123456') -> find();

        $user = User::where(['mobile' => '123456', 'email' => '123456@abc.com']) -> find();

        // 查询多条数据
        $user = User::all();

        $user = User::all(['level_id' => 4]);

        $user = User::where('level_id', '<=', 3) -> select();

        /******************** 更新数据 *******************/
        // 对象
        $user = User::get(1);

        $user -> mobile = '123456';

        $user -> email = '123456@abc.com';

        if (false !== $user -> save()) {

            echo '更新用户成功';

        } else {

            echo $user -> getError();

        }
        /**
         * save() 自动判断为 Update 操作,若要执行 Insert 操作,应改为
         * $user -> user_id = null; // 若不设主键id为null,在执行insert操作时会出现主键重复错误
         * $user -> isUpdate(false) -> save()
         */

        // 数组
        $userArr['mobile'] = '123456';

        $userArr['email'] = '123456@abc.com';

        User::update($userArr, ['user_id' => 1]);

        /******************** 删除数据 *******************/
        $user = User::get(1);

        $user -> delete();

        // 或者

        User::destroy(1);
  }
}
Responses
选择表情