从不同的控制器插入 yii2

Insert in yii2 from different controller

我想在 table 中插入数据。

像这样尝试但它不起作用。

$sql = $queryBuilder->insert(' HRMS_candidateEducation', [
                 'HRMS_candidateEducationCandidateID' => $candidateID,
                 'HRMS_candidateEducationDegree' => $data['Degree'.$i],
                 'HRMS_candidateEducationUniversity' => $data['University'.$i],
                 'HRMS_candidateEducationCollege' => $data['College'.$i],
                 'HRMS_candidateEducationYear' => $data['Specilization'.$i], 
                 'HRMS_candidateEducationSpecilization' => $data['Specilization'.$i],
                ], $params);

哪里不对?

使用

use yii\db\QueryBuilder;
use app\models\CandidateEducation;

这个函数似乎只创建了 SQL 语句 see doc

insert() Creates an INSERT command

为了执行命令,我认为你应该尝试这种方式

Yii::$app->db->createCommand()->
 insert(' HRMS_candidateEducation', [
             'HRMS_candidateEducationCandidateID' => $candidateID,
             'HRMS_candidateEducationDegree' => $data['Degree'.$i],
             'HRMS_candidateEducationUniversity' => $data['University'.$i],
             'HRMS_candidateEducationCollege' => $data['College'.$i],
             'HRMS_candidateEducationYear' => $data['Specilization'.$i], 
             'HRMS_candidateEducationSpecilization' => $data['Specilization'.$i],
            ], $params)->
 execute();

我找到了另一个解决我问题的方法。

这就是我所做的。按照这个 link.

public function actionCreate()
{
  $a=new A;
  $b=new B;
 if(isset($_POST['A'], $_POST['B']))
{
    // populate input data to $a and $b
    $a->attributes=$_POST['A'];
    $b->attributes=$_POST['B'];

    // validate BOTH $a and $b
    $valid=$a->validate();
    $valid=$b->validate() && $valid;

    if($valid)
    {
        // use false parameter to disable validation
        $a->save(false);
        $b->save(false);
        // ...redirect to another page
    }
}

$this->render('create', array(
    'a'=>$a,
    'b'=>$b,
));

}