当前位置: 首页 > news >正文

东城企业网站建设广告视频

东城企业网站建设,广告视频,湖南网络优化服务,企业网站建设有没有模板【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客

《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书

使用VS Code开发ThinkPHP项目-CSDN博客

编程与应用开发_夏天又到了的博客-CSDN博客

8.1  模型定义

定义模型非常简单,继承think\Model即可。下面是一个用户模型的示例:

<?php
namespace app\model;use think\Model;class User extends Model
{}

默认情况下,模型类名是去除表前缀的数据表名称,采用大驼峰命名法。比如下面的示例:

  • User <-> think_user
  • UserWallet <-> think_user_wallet

模型的$table属性可以手动指定数据表名称,下面是一个数据表为users的模型示例:

【示例8-1】

<?php
namespace app\model;use think\Model;class User extends Model
{protected $table='users'; // 手动指定数据表名称}

其他常用的模型属性包括$pk和$connection。$pk用来指定主键字段,默认为id,如果数据表主键不是id,则需要重新定义。$connection用来指定模型使用的数据库连接。

下面是一个指定主键和数据库连接的示例。

【示例8-2】

<?php
namespace app\model;use think\Model;class User extends Model
{protected $pk = 'user_id';         // 指定主键,多对多关联中必须指定主键protected $connection = 'user';    // 手动指定数据表名称
}

模型字段用来指定模型属性的数据类型,推荐每个模型类都进行定义,ThinkPHP 8默认会自动获取数据表的字段类型(需要查询一次数据库)。在生产实践中一般会开启字段缓存,以避免频繁获取字段类型的开销。

模型的数据字段和对应数据表的字段是对应的,默认会自动获取(包括字段类型),但自动获取会导致增加一次查询(可以开启字段缓存功能),因此需要在模型中明确定义字段信息以避免多一次查询的开销。下面是一个手动定义模型字段的示例。

【示例8-3】

<?php
namespace app\model;use think\Model;class User extends Model
{// 设置字段信息protected $schema = ['id'          => 'int','username'        => 'string','password'      => 'string','age' => 'int','balance'       => 'float','created_at' => 'datetime','updated_at' => 'datetime',];
}

上述代码中,模型字段对应数据库中的User表字段,$schema属性需要定义所有字段。如果只需要手动指定某些字段的数据类型,则可以使用$type属性,示例如下:

【示例8-4】

<?php
namespace app\model;use think\Model;class User extends Model
{// 设置字段信息protected $type = ['balance'       => 'float',];
}

8.2  插入数据

使用模型插入数据和查询构造器插入数据,最大的不同是模型会执行修改器、自动完成等逻辑,而数据库操作只是单纯的数据插入。

在调用模型实例的save方法插入数据时,如果插入成功,则返回true,否则会抛出异常。

【示例8-5】

本示例演示每个字段单独赋值。首先在mydb库中创建一张表,语句为:

CREATE TABLE `users` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(45) NOT NULL,`nickname` varchar(45) NOT NULL,`status` int DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;

控制器User代码如下:

<?php
namespace app\controller;use app\model\UserModel;class User {public function create() {$user = new UserModel();$data = ['name' => 'John Doe','nickname' => 'John Bull','status' => 1];$result = $user->save($data);if ($result) {return '创建成功';} else {return '创建失败';}}
}

对应的Model为app\model\UserModel.php,代码如下:

<?php
namespace app\model;use think\Model;class UserModel extends Model {// 设置当前模型对应的完整数据表名称protected $table = 'users';// 设置模型名称protected $name = 'user';// 设置可以批量赋值的字段列表protected $field = ['id', 'name', 'nickname', 'status'];
}

启动服务器,在浏览器中访问http://localhost:8000/user/create,页面将提示“创建成功”。当然,ThinkPHP 8也提供批量赋值的方法:

$user = new User;
$user->save(['name' => 'Bruce Lee','nickname' => 'Lee three foots','status' => 1
]);

1. REPLACE语句插入

REPLACE语句在数据库中通常用于插入新行或更新现有行。其工作原理类似于INSERT语句,但当新行与一个已有的行(根据PRIMARY KEY或UNIQUE索引)产生唯一性约束冲突时,旧行将被删除,然后新行被插入。因此,它可以视为一个删除(如果有需要)和插入的组合操作。

调用模型的replace方法可以进行REPLACE插入:

$user = new User;$user->replace()->save(['username' => 'test','password' => password_hash('test', PASSWORD_DEFAULT);]);

2. 批量插入

调用模型实例的saveAll方法可以批量插入数据。当数据行包含主键时,ThinkPHP 8会执行更新操作,否则执行插入操作,代码如下:

$user = new User;$list = [['name'=> 'test','age' => 20], // 识别为插入操作['id' => 2,'name'=> 'test1','age' => 21], // 识别为更新操作];$user->saveAll($list);

3. create方法插入

使用模型类的create方法插入数据是一种常用的方法,它可以返回模型实例,代码如下:

$user = User::create(['name'  =>  'test','age' =>  20]);

8.3  更新数据

save方法会自动根据是否有主键来决定执行插入和更新操作,无须开发者手动调用更新方法。对于更新操作,一般需要先查询出模型实例,给对应的字段赋值,最后调用save方法更新数据,下面是一个示例:

$user = User::where('username','test')->find();
if(!empty($user)) {$user->age = 20;$user->save();
}

还可以使用模型类的update方法更新数据,返回对应的模型实例:

User::update(['age' => 20], ['id' => 1]);

8.4  删除数据

使用模型来删除数据,会执行模型的事件处理逻辑;而直接使用查询构造器删除数据,则不会执行模型的事件处理逻辑。下面是几种删除数据的方法:

$user = User::find(1);
$user->delete(); // 调用模型实例的delete方法User::destroy(1); // 静态方法删除
User::destroy([1,2,3]); // 支持批量删除多个数据User::where('age', '<', 20)->delete(); // 基于where条件删除

http://www.hkea.cn/news/39423/

相关文章:

  • 建站平台入口徐州网站设计
  • 出口手工艺品网站建设方案站长统计app下载
  • 提升学历骗局武汉搜索引擎排名优化
  • wordpress+park主题上海全国关键词排名优化
  • 潍坊最早做网站的公司短链接生成网址
  • 东莞化工网站建设爱站网ip反域名查询
  • 做网站赚钱 2017哈尔滨关键词排名工具
  • 建设的网站首页微信怎么做推广
  • 建设网站导航百度信息流推广和搜索推广
  • 深圳室内设计公司招聘信息流广告优化
  • 旅游网站首页四种营销模式
  • 负责网站建设如何在百度发广告推广
  • 联通的网站是谁做的营销的主要目的有哪些
  • 衡阳微信网站地推的方法和技巧
  • 南阳做网站公司哪家好自动发外链工具
  • 潍坊网站制作最低价格网络营销案例有哪些
  • 做网站有谁做谷歌seo视频教程
  • 资深的网站推广完美日记网络营销策划书
  • 90设计网站免费素材网站seo培训
  • 整形美容网站源码上海seo优化bwyseo
  • 武威市住房和建设局网站百度app下载安装普通下载
  • 网站物理结构天津百度推广排名
  • 美容平台网站建设百度指数查询移动版
  • 工程公司手机网站建立网站怎么搞
  • 做网站软件wd惠州seo外包
  • 聊城做网站seo关键词分类
  • 网站做公司女生学网络营销这个专业好吗
  • 网络运营主要工作内容seo教程自学入门教材
  • 用其他商标在自己网站做宣传百度云网盘资源分享网站
  • 对商家而言网站建设的好处淘宝关键词查询工具哪个好