22.Yii2.0框架多表关联一对一查询之hasOne
思路:
- 通过文章查它对应的分类信息
- 一对一的关系
控制器里
//一对一关联查询
public function actionRelatesone()
{
//方法一,hasOne() 用查一条文章的结果去关系查它对应的分类信息,
$article = Article::findOne(1);
// $category = $article->getCategory();
//这里是取的是$article下的属性category,
//它会调用__get方法,会自动调用getCategory()方法
//模型里可以不加one(),会自动调用one()方法
//这里是用article作关系主表的,所以模型要写在article模型里
$category = $article->category;
dd($category);
// //方法二,with用多条文章的结果去关联查它对应的分类信息
//这里是用article作关系主表的,所以模型要写在article模型里
// $articles = Article::find()->with('category')->asArray()->all();
// dd($articles);
}
模型里
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Article extends ActiveRecord
{
public function getCategory()
{
//方法一:会自动调用one()方法 可以省略one()
$category = $this->hasOne(Category::className(),['cid'=>'article_id'])->asArray()->one();
return $category;
//方法二:
// $category = $this->hasOne(Category::className(),['cid'=>'article_id']);
// return $category;
}
}
方法一打印结果:
D:\xampp\htdocs\yii\helper\function.php:26:
array (size=2)
'cid' => string '1' (length=1)
'c_name' => string '新闻' (length=6)
方法二打印结果:
D:\xampp\htdocs\yii\helper\function.php:26:
array (size=9)
0 =>
array (size=5)
'article_id' => string '1' (length=1)
'article_title' => string '刘强东被捕照曝光 美警署:调查期可自由出入境 ' (length=63)
'num' => string '0' (length=1)
'cate_id' => string '1' (length=1)
'category' =>
array (size=2)
'cid' => string '1' (length=1)
'c_name' => string '新闻' (length=6)
1 =>
array (size=5)
'article_id' => string '2' (length=1)
'article_title' => string '《唐诗三百案》看2集入坑,看6集停不下来……' (length=62)
'num' => string '0' (length=1)
'cate_id' => string '1' (length=1)
'category' =>
array (size=2)
'cid' => string '2' (length=1)
'c_name' => string '娱乐' (length=6)
2 =>
array (size=5)
'article_id' => string '3' (length=1)
'article_title' => string '买数据?官媒评蔡徐坤新歌转发一亿次“不简单”' (length=66)
'num' => string '0' (length=1)
'cate_id' => string '1' (length=1)
'category' => null
3 =>
array (size=5)
'article_id' => string '4' (length=1)
'article_title' => string '买数据?官媒评蔡徐坤新歌转发一亿次“不简单”' (length=66)
'num' => string '0' (length=1)
'cate_id' => string '1' (length=1)
'category' => null
4 =>
array (size=5)
'article_id' => string '5' (length=1)
'article_title' => string '蒋勤勤生日晒二胎儿子照 陈建斌特意赶回为她庆生' (length=67)
'num' => string '0' (length=1)
'cate_id' => string '1' (length=1)
'category' => null
5 =>
array (size=5)
'article_id' => string '6' (length=1)
'article_title' => string 'php的发展前景怎样' (length=24)
'num' => string '8' (length=1)
'cate_id' => string '2' (length=1)
'category' => null
6 =>
array (size=5)
'article_id' => string '7' (length=1)
'article_title' => string '67岁宋春丽与聂远出新戏,满头花发让人心疼,面容慈祥豪爽依旧!' (length=89)
'num' => string '12' (length=2)
'cate_id' => string '2' (length=1)
'category' => null
7 =>
array (size=5)
'article_id' => string '8' (length=1)
'article_title' => string '知微又涨粉啦!《天盛长歌》小衣衣、楚王和金狮王子你会选谁?' (length=87)
'num' => string '18' (length=2)
'cate_id' => string '2' (length=1)
'category' => null
8 =>
array (size=5)
'article_id' => string '9' (length=1)
'article_title' => string '刘亦菲穿旗袍带仙气,赵丽颖穿旗袍优雅,她穿旗袍最有民国范' (length=84)
'num' => string '14' (length=2)
'cate_id' => string '2' (length=1)
'category' => null
[Haima的博客]
http://www.cnblogs.com/haima/
分类:
Yii2.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构