多表操作
来源:互联网 发布:腾讯游戏数据分析 编辑:程序博客网 时间:2024/06/08 09:35
拥有blog表、blog_category表(关联表)、 category表
目的:
(1)在blog对应的页面可以展示与category相关的字段
(2)在blog对应的页面中修改后,直接能影响到blog_category关联表
1、实现的基本思路
(1)在blog模型层引入$category
(2)在category模型层给出一个方法,你起码得让blog获得到数据
public static function dropDownList(){ $query=static::find(); $enums=$query->all(); return $enums?ArrayHelper::map($enums,'id','name'):[]; }
(3)在backend\views_form.php增加对于category的操作,比如复选操作
<?= $form->field($model, 'category')->label('栏目')->checkboxList(Category::dropDownList()) ?>
2、实现的基本思路(事务操作)
(1)主要修改控制器中的action方法如:actionCreate
public function actionCreate() { $model = new Blog(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { $transaction=Yii::$app->db->beginTransaction(); try{ $model->save(false); $blogId=$model->id; $data=[]; //注意这里的属组形式[blog_id, category_id],一定要跟下面batchInsert方法的第二个参数保持一致 foreach ($model->category as $k=>$v){ $data[]=[$blogId,$v]; } //获取属性和表名 $blogCategory=new BlogCategory(); $attributes=array_keys($blogCategory->getAttributes()); $tableName=$blogCategory::tableName(); //批量插入数据库 Yii::$app->db->createCommand()->batchInsert( $tableName, $attributes, $data )->execute(); //提交 $transaction->commit(); return $this->redirect(['index']); } catch (Exception $e){ //回滚 $transaction->rollback(); throw $e; } } else { return $this->render('create', [ 'model' => $model, ]); } }
这样的话,直接在blog页面进行添加操作,同样也可以save到blog-category表中
(2)可能在blog页面中需要调用blog-category的数据
a、现在blog-category的模型层写个给数据的方法
public static function getRelationCategoryId(blogId){res=static::find()->select('category_id')->where(['blog_id'=>
}
b、(你把数据怎么获得都给我了,我就不客气了)直接在blog控制器中调用该方法,在render()之前添加
$model->category=BlogCategory::getRelationCategoryId($id); return $this->render('update', [ 'model' => $model, ]);
阅读全文
0 0
- mysql基本操作,及多表操作
- 多表操作
- 多表查询操作
- mysql--多表操作
- 多表操作
- 多表联合操作
- MySQL多表操作
- Django多表操作
- MySQL多表操作
- 多表操作
- 多表查询操作
- hibernate多表操作之一对多的单项操作
- hibernate初学8 多表操作之一对多操作
- Spark的Dataset操作(五)-多表操作 join
- C# Linq的多表join操作 空操作
- DataSet多表查询操作
- DataSet多表查询操作
- qbc进行多表操作
- 关于Node 与 Element 的常用总结
- [bzoj4815][CQOI2017]小Q的表格
- php 版本选择、线程安全(Thread Safe)和非线程安全(Non Thread Safe)
- android Listview头部带控件滑动距离的判断
- NHibernate实现查询分页
- 多表操作
- Apache通过ip和user_agent限制访问
- Android 关于Https中Cookie的使用(PersistentCookieJar)
- C#中 什么是接口Interface,以及如何简单使用
- POJ 2233 GAME AGAIN! 笔记
- Go语言并发之美
- Text文本复制到系统剪切板
- 记录Ionic开发中,安卓5.5+使用websocket,连接错误
- 欢迎使用CSDN-markdown编辑器