Yii2保存在单独的相关记录保存在单个事务调用 [英] Yii2 save related records in single save call in single transaction

查看:270
本文介绍了Yii2保存在单独的相关记录保存在单个事务调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在yii2我怎么可以保存多个相关记录到数据库到单一的保存和调用单个事务。 我有两个表:

 用户 -  ID,名称
UserAddress  -  ID,USER_ID,城市
 

用户表具有一对多的关系UserAdress表

我想要做的是:

  UserAddress UA =新UserAddress();
ua.city =FFF

用户U =新用户();
u.name =测试;
u.userAddress =新阵列(UA);
u.save();
 

调用保存的用户应保存用户和useraddress与USER_ID设置为USER.ID以及

解决方案

  //你需要创建的hasMany关系userAddress(看指南的关系)

$交易=的Yii :: $ APP-> DB->的BeginTransaction();

尝试 {

    $用户=新用户();
    $用户可>名称='名称';
    $用户可>保存();

    $ UA =新UserAddress();
    $ UA->城市='城';

    $用户可>链接(userAddress',$ UA); //<  - 它会在UserAddress表中的新纪录,ua.user_id = user.id

    $交易 - >犯();

}赶上(异常$ E){

    $交易 - >回滚();

}
 

In yii2 how can i save multiple related records into db into single save call and single transaction. I have two tables:

User - id, name
UserAddress - id , user_id , city

User table has one to many relation to UserAdress table

What i want to do is :

UserAddress ua = new UserAddress();
ua.city = "fff"

User u = new User();
u.name = "test";
u.userAddress = new Array(ua);
u.save();

calling save on user should save user and useraddress with user_id set to user.id as well

解决方案

 // You need create hasMany relation 'userAddress' (look guide relations)

$transaction = Yii::$app->db->beginTransaction();

try {

    $user = new User();
    $user->name = 'Name';
    $user->save();

    $ua = new UserAddress();
    $ua->city = 'City';

    $user->link('userAddress', $ua); // <-- it creates new record in UserAddress table with ua.user_id = user.id

    $transaction->commit();

} catch (Exception $e) {

    $transaction->rollBack();

}

这篇关于Yii2保存在单独的相关记录保存在单个事务调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆