ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[danger] 模型调用 find() 该方法用于查询一条数据,比如: + 用户登陆判断用户密码是否正确 + 根据表的主键快速查询数据 >[danger] 根据主键查询数据 + 给 find() 传一个参数代表根据主键查询数据 ~~~ // 查询主键为1的数据 User::find(1); // 查看执行的SQL User::fetchSql(true)->find(1); ~~~ ~~~ SELECT * FROM `user` WHERE `id` = 1 LIMIT 1 ~~~ + 主键字段tp框架默认为`id`,如果不是该字段,需要在模型中指定主键字段 ~~~ protected $pk = 'aid'; ~~~ ~~~ // 查询主键为1的数据 User::find(1); ~~~ ~~~ SELECT * FROM `user` WHERE `aid` = 1 LIMIT 1 ~~~ >[danger] 有很多场景(登录)查询某个数据是否存在,可以使用 `findOrEmpty()` + 数据不存在返回一个空模型(也是对象) ~~~ $user = User::findOrEmpty(1); ~~~ + 判断结果是否为空 ~~~ // true 数据为空 false 数据不为空,也就是查到数据了 $bool = $user->isEmpty(); ~~~ + 链式操作直接返回数据是否存在 ~~~ // true 数据不存在 false 查询到了数据 $isEmpty = User::findOrEmpty(1)->isEmpty(); ~~~ >[danger] 模型调用 find() 和 `\think\facade\Db` 类调用 find() 的对比 + 模型调用 find(),查到数据返回模型数据对象,查不到返回 `NULL` + Db 类调用 find(),查到数据返回一维数组,查询不到返回 `NULL` + 模型调用find(),可以触发获取器、模型事件等模型的功能,Db类调用find() 则不行 >[danger] 在当前模型中查询当前模型数据,直接使用 `self` 关键字即可 ``` <?php namespace app\model; use think\Model; class User extends Model { public function getUserInfo() { // 查询到数据返回模型数据对象,查不到数据返回NULL $data = self::find(10); halt($data); } } ```