如何在Yii 1.7中以递归方式使用HAS_MANY关系在MySql表中保存数据

时间:2016-04-13 07:50:34

标签: php mysql yii yii-cactiverecord

我有JSON数据,我想立即保存数据库中的所有数据。图像中显示的数据库架构。所以我可以看到这里的二阶HAS_MANY关系。 yii中的esaverelatedbehavior允许我仅保存第一个订单数据,例如company_*。有没有办法一次性将所有数据保存到所有表中? enter image description here

1 个答案:

答案 0 :(得分:0)

无法通过一个插入查询将数据插入到多个表中

您必须使用事务来执行许多插入

public function saveJsonData()
{

    /**
     * parsing your json data
     */

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

    try {
        $company = new Company();
        $company->setAttributes($company_data);

        if (!$company->save()) {
            throw new Exception('some exception');
        }

        foreach ($otherCompanyRelatedDataList as $data) {
            $otherCompanyData = new OtherCompanyData();
            $otherCompanyData->setAttributes($data);
            if (!$otherCompanyData->save()){
                throw new Exception('some exception');
            }
        }

        /**
         *  save other data
         */


        $transaction->commit();

    } catch (Exception $e) {
        $transaction->rollback();
    }
}