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

怎么做网站例如京东惊艳的网站设计

怎么做网站例如京东,惊艳的网站设计,swoole怎么做直播网站,效果图制作软件手机版【图书介绍】《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博客

关系数据库中的关联关系是其核心组成部分之一,它们可以确保数据的一致性、优化查询语句、实现复杂的业务逻辑等。通过定义关联关系,可以使得不同表之间存在明确的对应关系,从而更好地反映业务需求。

在工程实践中,一般有一对一、一对多、多对多三种关联关系。本文讲解ThinkPHP 8的一对一关联。

每个主模型有一个关联模型,可以选择在主模型添加外键或者在关联模型添加外键,在模型中使用hasOne方法定义。下面以用户模型和用户资料模型的示例来演示一对一关联,用户表参见8.1节,这里再创建一个用户资料表profile并加入一条id为1的记录(可以使用MySQL Workbench工具来操作表及其数据,学习起来相对方便),SQL语句如下:

CREATE TABLE `profile` (`id` int NOT NULL,`mobile` varchar(45) DEFAULT NULL,`email` varchar(45) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
INSERT INTO `mydb`.`profile`(`id`,`mobile`,`email`) VALUES(1 ,'13701352990','tom@163.com' );
1. 用户模型

用户模型的示例如下:

<?php
namespace app\model;use think\Model;class UserModel extends Model
{protected $table = 'users';// 设置字段信息protected $schema = ['id'			=> 'int','name'		=> 'string','nickname'	=> 'string','status'		=> 'int',];public function profile(){return $this->hasOne(ProfileModel::class, 'id'); // hasOne}
}

在ThinkPHP 8中默认会使用profile数据表的id作为关联键,可以在定义关联关系时指定。比如,上面代码中我们指定id为profile的关联键:

return $this->hasOne(ProfileModel::class, 'id');
2. 属性模型

属性模型的示例如下:

<?php
namespace app\model;use think\Model;class ProfileModel extends Model
{protected $table = 'profile';// 设置字段信息protected $schema = ['id'       => 'int','mobile'  => 'string','email'   => 'string',];
}
3. 关联查询

关联查询的示例如下:

<?php
namespace app\controller;use think\Model;
use app\model\UserModel;
use app\model\ProfileModel;class User {public function one2one(){$user = UserModel::find(1);// 输出用户资料中的电子邮箱return $user->profile->email;}
}

上面2个模型1个控制器完成后,运行服务器,在浏览器中访问http://localthost:8000/user/one2one,可以查询出id为1的用户的电子邮箱。

4. 根据关联数据查询

上面的示例中,我们是基于主模型进行查询的,那么也可以根据关联模型进行查询。

下面是查询昵称为admin开头的用户示例:

$users = User::hasWhere('profile', function(Query $query) {$query->where('email', 'like', 'tom%');
})->select();
5. 关联预载入

默认情况下,只有在访问关联模型的属性时,才会查询关联模型数据。比如下面的示例中,如果有10个$users,将产生11条查询(1条查询主模型列表,10条查询用户资料),这就是著名的数据库N+1问题。

$users = UserModel::select();
foreach ($users as $user) {echo $user->profile->email;
}

使用以下两种方案解决N+1问题:

(1)两次查询。第一次查询用户列表,取得用户ID列表,第二次使用IN查询方法查询用户资料。

(2)连表查询。直接使用数据库JOIN语句同时查询用户和用户资料。

ThinkPHP 8对上面两种方法都有对应的实现。

6. 两次查询

使用with方法传入关联名称即可,示例如下:

$users = UserModel::with('profile')->select();
foreach ($users as $user) {echo $user->profile->email;
}

如果需要自定义关联查询对象,则可以使用闭包,示例如下:

$users = UserModel::with(['profile'	=> function(Query $query) {$query->field(['id','name','email']);
}])->select();
foreach ($users as $user) {echo $user->profile->email;
}

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

相关文章:

  • 旅游网站建设服务器ip域名解析
  • 企业网站建设三个原则百度指数资讯指数是指什么
  • 房地产集团网站建设方案软文文案案例
  • 阜蒙县建设学校网站是什么北京seo编辑
  • 珠海建设局网站十大经典事件营销案例分析
  • 创建网站开发公司互联网推广引流是做什么的
  • 万盛集团网站建设seo网站推广全程实例
  • 做教育的网站需要资质吗网站怎么开发
  • 微网站怎么做滚动中国万网域名注册官网
  • 个人如何免费建网站seo在线优化工具 si
  • 双线主机可以做彩票网站吗网络推广合作协议
  • 做外贸的b2b网站域名批量查询系统
  • 建设网站需要哪些职位网站建设策划书
  • 苏州网站建设哪里好网站点击排名优化
  • 网站建设收费标准策划百度推广关键词越多越好吗
  • 网站怎么做更新吗如何建立网页
  • 国外建设工程招聘信息网站tool站长工具
  • 专业做相册书的网站电商网站建设制作
  • 银川网站开发公司电话东莞网
  • 环境保护局网站管理制度建设百度指数的主要功能有
  • 安装wordpress提示500错误关键词优化的策略有哪些
  • 企业网站建设公司排名深圳高端seo公司助力企业
  • 做网站套餐网站seo
  • 网站上的代码网页怎么做的下载百度软件
  • 网站功能模块建设搜狗推广
  • 网站做推广有用吗网站页面设计
  • 做简报的网站广州搜发网络科技有限公司
  • 南乐县住房和城乡建设局网站制作网站的步骤是什么
  • 金华做网站最专业的公司搜易网提供的技术服务
  • wordpress适合门户网站吗怎么营销自己的产品