Как сохранить данные в таблицах MySql с отношением HAS_MANY рекурсивным способом в Yii 1.7

У меня есть данные JSON, и я хочу сохранить все данные в базе данных одновременно. Схема базы данных показана на рисунке. так что я могу видеть здесь второй порядок HAS_MANY отношение esaverelatedbehavior в YII позволяют мне сохранять только данные первого порядка, например company_*, Есть ли способ сохранить все данные сразу во все таблицы? введите описание изображения здесь

1 ответ

Невозможно вставить данные во многие таблицы одним запросом на вставку

Вы должны использовать транзакции для выполнения многих вставок

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();
    }
}
Другие вопросы по тегам