在,yii2中,我想在一个表中插入sinlge行,在另一个表中插入多行

在,yii2中,我想在一个表中插入sinlge行,在另一个表中插入多行,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,在,yii2中,我希望在一个表中插入sinlge行,以及在另一个表中插入具有相同id的多行 控制器代码-- $modelcid=$modeld->categoryid; $modelpc=$modeld->productcode; $modelqty=$modeld->qty; $arrayvalue[]=array('id'=>$modelcid,'pc'=>$modelpc,'qty'=>$modelqty); $i=0; foreach($arrayvalue作为$key=>$val){

在,yii2中,我希望在一个表中插入sinlge行,以及在另一个表中插入具有相同id的多行

控制器代码--
$modelcid=$modeld->categoryid;
$modelpc=$modeld->productcode;
$modelqty=$modeld->qty;
$arrayvalue[]=array('id'=>$modelcid,'pc'=>$modelpc,'qty'=>$modelqty);
$i=0;
foreach($arrayvalue作为$key=>$val){
$purchaseid=$modeld->purchaseid=$modelm->purchaseid;
$cid=$modeld->categoryid=$val['id'][$i];
$pc=$modeld->productcode=$val['pc'][$i];
$qty=$modeld->qty=$val['qty'][$i];
$comments=$modeld->comments=$modelm->comments;
如果($modeld->save()){
$i++;
}
}
“$modeld->save()”它只保存第一个条目。
属性
\yii\db\ActiveRecord
确定:

调用
save()

保存新记录时,此变量设置为
false
,因此代码将在循环的第一次运行中创建记录,并在后续运行中更新记录

对于要保存的每条记录,需要将此变量显式设置为
true
。您还需要取消设置主键字段:

foreach ($arrayvalue as $key => $val) {
    $modeld->isNewRecord = true;
    unset($modeld->id); //assuming `id` is your primary key field
    ...
或者,您可以在循环中使用
$modeld
的新实例:

foreach ($arrayvalue as $key => $val) {
    $modeld = new ModelD; //assuming your model class is ModelD 
    ...
\yii\db\ActiveRecord
的属性确定:

调用
save()

保存新记录时,此变量设置为
false
,因此代码将在循环的第一次运行中创建记录,并在后续运行中更新记录

对于要保存的每条记录,需要将此变量显式设置为
true
。您还需要取消设置主键字段:

foreach ($arrayvalue as $key => $val) {
    $modeld->isNewRecord = true;
    unset($modeld->id); //assuming `id` is your primary key field
    ...
或者,您可以在循环中使用
$modeld
的新实例:

foreach ($arrayvalue as $key => $val) {
    $modeld = new ModelD; //assuming your model class is ModelD 
    ...