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

昆明响应式网站制作免费seo网站

昆明响应式网站制作,免费seo网站,廊坊快速排名优化,新开家政如何做网站用一对多关联的前提 多的一方的数据库表有一的一方数据库表的外键。 举例,用户获取自己的所有文章 数据表结构如下 // 用户表 useruser_id - integer // 用户主键name - varchar // 用户名称// 文章表 articlearticle_id - integer // 文章主键title - varchar …

用一对多关联的前提

多的一方的数据库表有一的一方数据库表的外键。

举例,用户获取自己的所有文章

数据表结构如下

// 用户表
useruser_id - integer  // 用户主键name - varchar // 用户名称// 文章表
articlearticle_id - integer // 文章主键title - varchar // 文章名标题content - text // 文章内容user_id - integer // 作者 user_id

多的一方(文章表)存在一的一方(用户表)的外键 user_id 。

一对多关联定义

用户表 user 模型:

<?phpnamespace app\api\model;class User extends Base
{// 不是默认主键名称记得定义 pk 属性protected $pk = 'user_id';// 获取用户详情以及用户的所有文章public static function getDetail(int $user_id){return self::get($user_id, 'articles');}// 一对多获取用户的文章public function articles(){// 完整写法return $this->hasMany('Article', 'user_id', 'user_id');}
}

hasMany 方法参数如下:

hasMany('关联模型', '关联模型外键', '当前模型主键');

除了关联模型外,其它参数都是可选。

  • 关联模型(必须):模型名或者模型类名
  • 关联模型外键:关联模型外键,默认的外键名规则是当前模型名+_id
  • 当前模型主键:当前模型主键,一般会自动获取也可以指定传入

实例演示

shop_article 表

 shop_user 表

演示1

获取 user_id 为 1 的用户详情以及用户的所有文章

用户 User 控制器

<?phpnamespace app\api\controller;use app\api\model\User as UserModel;class User extends Base
{public function detail(){$user_id = 1;$detail = UserModel::getDetail($user_id);echo '<pre>';var_dump($detail);echo '</pre>';}
}

用户表 User 模型

<?phpnamespace app\api\model;class User extends Base
{// 不是默认主键名称记得定义 pk 属性protected $pk = 'user_id';// 获取用户详情以及用户的所有文章public static function getDetail(int $user_id){return self::get($user_id, 'articles');}// 一对多获取用户的文章public function articles(){// 完整写法return $this->hasMany('Article', 'user_id', 'user_id');}
}

user 控制器  detail 方法输出

object(app\api\model\User)#41 (2) {["data"]=>array(4) {["user_id"]=>int(1)["name"]=>string(5) "admin"["create_time"]=>int(1688452509)["update_time"]=>int(1688452509)}["relation"]=>array(1) {["articles"]=>object(think\model\Collection)#50 (1) {["items":protected]=>array(2) {[0]=>object(app\api\model\Article)#45 (2) {["data"]=>array(6) {["article_id"]=>int(1)["title"]=>string(12) "测试标题"["content"]=>string(12) "测试内容"["user_id"]=>int(1)["create_time"]=>int(1689401566)["update_time"]=>int(1689401566)}["relation"]=>array(0) {}}[1]=>object(app\api\model\Article)#46 (2) {["data"]=>array(6) {["article_id"]=>int(2)["title"]=>string(13) "测试标题1"["content"]=>string(13) "测试内容1"["user_id"]=>int(1)["create_time"]=>int(1689498967)["update_time"]=>int(1689498967)}["relation"]=>array(0) {}}}}}
}

单条查询输出的是 User 模型实例,User 模型实例的 relation 属性(关联数组)保存着关联模型,在该关联数组中,关联方法名 articles 作为键名,关联查询结果作为键值(对一关联查询返回模型实例,对多关联查询返回结果集对象)。

使用的 SQL 如下

SELECT * FROM `shop_user` WHERE `user_id` = 1 LIMIT 1SELECT * FROM `shop_article` WHERE `user_id` = 1

获取当前用户的文章,访问 articles(关联方法名) 属性即可,如下

<?phpnamespace app\api\controller;use app\api\model\User as UserModel;class User extends Base
{public function detail(){$user_id = 1;$detail = UserModel::getDetail($user_id);echo '<pre>';var_dump($detail->articles);echo '</pre>';}
}

输出如下

object(think\model\Collection)#50 (1) {["items":protected]=>array(2) {[0]=>object(app\api\model\Article)#45 (2) {["data"]=>array(6) {["article_id"]=>int(1)["title"]=>string(12) "测试标题"["content"]=>string(12) "测试内容"["user_id"]=>int(1)["create_time"]=>int(1689401566)["update_time"]=>int(1689401566)}["relation"]=>array(0) {}}[1]=>object(app\api\model\Article)#46 (2) {["data"]=>array(6) {["article_id"]=>int(2)["title"]=>string(13) "测试标题1"["content"]=>string(13) "测试内容1"["user_id"]=>int(1)["create_time"]=>int(1689498967)["update_time"]=>int(1689498967)}["relation"]=>array(0) {}}}
}

演示2

获取所有用户的用户详情以及用户的所有文章

用户 User 控制器

<?phpnamespace app\api\controller;use app\api\model\User as UserModel;class User extends Base
{// 获取所有用户的用户详情以及用户的所有文章public function list(){$list = UserModel::getList();echo '<pre>';var_dump($list);echo '</pre>';}
}

用户表 User 模型

<?phpnamespace app\api\model;class User extends Base
{protected $pk = 'user_id';// 获取所有用户的用户详情以及用户的所有文章public static function getList(){return self::with('articles')->select();}// 一对多获取用户的文章public function articles(){// 完整写法return $this->hasMany('Article', 'user_id', 'user_id');}
}

user 控制器  list 方法输出

object(think\model\Collection)#44 (1) {["items":protected]=>array(3) {[0]=>object(app\api\model\User)#41 (2) {["data"]=>array(4) {["user_id"]=>int(1)["name"]=>string(5) "admin"["create_time"]=>int(1688452509)["update_time"]=>int(1688452509)}["relation"]=>array(1) {["articles"]=>object(think\model\Collection)#52 (1) {["items":protected]=>array(2) {[0]=>object(app\api\model\Article)#47 (2) {["data"]=>array(6) {["article_id"]=>int(1)["title"]=>string(12) "测试标题"["content"]=>string(12) "测试内容"["user_id"]=>int(1)["create_time"]=>int(1689401566)["update_time"]=>int(1689401566)}["relation"]=>array(0) {}}[1]=>object(app\api\model\Article)#48 (2) {["data"]=>array(6) {["article_id"]=>int(2)["title"]=>string(13) "测试标题1"["content"]=>string(13) "测试内容1"["user_id"]=>int(1)["create_time"]=>int(1689498967)["update_time"]=>int(1689498967)}["relation"]=>array(0) {}}}}}}[1]=>object(app\api\model\User)#42 (2) {["data"]=>array(4) {["user_id"]=>int(2)["name"]=>string(0) ""["create_time"]=>int(1689732287)["update_time"]=>int(1689732287)}["relation"]=>array(1) {["articles"]=>object(think\model\Collection)#53 (1) {["items":protected]=>array(0) {}}}}[2]=>object(app\api\model\User)#43 (2) {["data"]=>array(4) {["user_id"]=>int(3)["name"]=>string(6) "测试"["create_time"]=>int(1690355199)["update_time"]=>int(1690355199)}["relation"]=>array(1) {["articles"]=>object(think\model\Collection)#54 (1) {["items":protected]=>array(0) {}}}}}
}

多条查询返回的是 Collection(结果集)对象,Collection 对象的 item 属性保存着所有用户模型实例,每个用户模型实例的 relation 属性 (关联数组)属性保存着关联模型实例,关联方法名 articles 作为键名,结果集对象作为键值,结果集对象的 items 属性(索引数组)保存着关联查询结果。

使用的 SQL 如下

SELECT * FROM `shop_user`SELECT * FROM `shop_article` WHERE `user_id` IN (1,2,3)

获取每个用户的所有文章,访问 articles(关联方法名) 属性即可,如下

<?phpnamespace app\api\controller;use app\api\model\User as UserModel;class User extends Base
{public function list(){$list = UserModel::getList();foreach ($list as $user) {echo '<pre>';var_dump($user->articles);echo '</pre>';}}}

​​​​​​​

user 控制器 list 方法输出如下

object(think\model\Collection)#52 (1) {["items":protected]=>array(2) {[0]=>object(app\api\model\Article)#47 (2) {["data"]=>array(6) {["article_id"]=>int(1)["title"]=>string(12) "测试标题"["content"]=>string(12) "测试内容"["user_id"]=>int(1)["create_time"]=>int(1689401566)["update_time"]=>int(1689401566)}["relation"]=>array(0) {}}[1]=>object(app\api\model\Article)#48 (2) {["data"]=>array(6) {["article_id"]=>int(2)["title"]=>string(13) "测试标题1"["content"]=>string(13) "测试内容1"["user_id"]=>int(1)["create_time"]=>int(1689498967)["update_time"]=>int(1689498967)}["relation"]=>array(0) {}}}
}
object(think\model\Collection)#53 (1) {["items":protected]=>array(0) {}
}
object(think\model\Collection)#54 (1) {["items":protected]=>array(0) {}
}

如果觉得作者写得好,请帮我点个赞,谢谢。

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

相关文章:

  • 计算机网站设计论文营销排名seo
  • 源码资源国内专业seo公司
  • 丽水微信网站建设报价免费精准客源
  • 广东建设工程中标公示网站google搜索引擎优化
  • 南宁老牌网站建设公司正版google下载
  • 网站做信用认证有必要吗微信朋友圈推广平台
  • 电子政务网站建设要求百度关键词规划师
  • 博客网站开发毕设免费大数据分析网站
  • 深圳教育平台网站建设好消息疫情要结束了
  • 国外设计文章的网站淘宝代运营靠谱吗
  • 市桥网站建设sem论坛
  • 猎头公司是做什么的可靠吗排名优化外包公司
  • 扶贫网站建设关键词查询神器
  • 沈阳酒店企业网站制作公司2023年9月疫情又开始了吗
  • 厦门专业网站建设如何快速推广一个新产品
  • 帮人做传销网站违法吗seo网站排名助手
  • 如何做优品快报下的子网站营销型网站建设目标
  • 用织梦做网站调用乱码营业推广是什么意思
  • 做走私网站北京口碑最好的it培训机构
  • 网站建设OA系统开发it培训机构哪家好
  • 网站运维可以做哪些域名查询网站入口
  • 网站开发的基本语言外贸平台自建站
  • 女生自己做网站营销方法有哪些
  • 怎么自己做网站吓别人金融网站推广圳seo公司
  • 彩票网站的客服有做吗海淀seo搜索优化多少钱
  • 河源哪有做网站网页模板设计
  • 手机网站可以做英文版本吗近三天时政热点
  • 怎么做网站游戏网络优化排名培训
  • ic外贸网站建设黑帽seo技巧
  • 实业有限公司网站怎么做百度一下了你就知道官网