php yii2 ar 方式确定 model 对应关系
yii2 ar 支持model的对应关系建立 支持 一对一。一对多方式的 数据查询
首先确定两个model 的 在对应的model 类中 编写 一个叫 getmodel方法
比如我这边写了两个表
tbl_user,tbl_group
CREATE TABLE `tbl_group` ( `id` int(11) NOT NULL AUTO_INCREMENT, `group_name` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `tbl_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) DEFAULT NULL, `group_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8使用gii 组件生成对应的 数据库 model 类
model名称分别为 TblGroup,TblUser
比如我这个这个 需要创建 user group 表之间的关联关系
可以在 user 这个model中创建getTblGroup 这个方法声明两者之间的对应关系
public function getTblGroup(){ return $this->hasOne(TblGroup::className(),["group_id"=>"id"]); }
这样就确定了。他们两个的关联关系。为一对一
那么怎么去调用这个关联关系进行 数据查询呢
我这边简单的写了一个方法进行 两表的查询
<?php namespace appcontrollers; use Yii; use yiiwebController; use appmodelsTblUser; class TestController extends Controller { public function actionIndex(){ $user_obj=TblUser::find(); $user_obj->joinWith("tblGroup"); echo $user_obj->createCommand()->getRawSql();//输出sql echo "<br>"; $info=$user_obj->asArray()->all(); echo "<pre>"; print_r($info);die; } }SELECT `tbl_user`.* FROM `tbl_user` LEFT JOIN `tbl_group` ON `tbl_user`.`group_id` = `tbl_group`.`id`
生成的sql如上。
我这边是没有数据的
如果有数据你会发现查询出来打印的数据是这个样子的
如果为一对多关系 可以使用hasMany 创建对应的关联关系 具体使用与上面相同。如果有配置之类的东西不明确。可以直接查看 yii2 class 参考手册
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: phpExcel 读取数据,大数据文件处理方案
- 下一篇: php如何统计下载成功次数