Php 如何在Yii中插入多个表中的数据
我是新来的。我需要创建产品模块来保存产品数据。因此,我需要创建两个表Php 如何在Yii中插入多个表中的数据,php,yii2,Php,Yii2,我是新来的。我需要创建产品模块来保存产品数据。因此,我需要创建两个表products和product\u image,以保存产品数据和多个产品图像 产品表 标识、类别、标识、标题、价格、说明 产品形象表 标识、产品标识、图像 我已经如上所述创建了表,并为产品表生成了模型和CRUD。但当我要添加产品页面时,我并没有看到图片上传按钮在添加产品页面中,我只得到了product表字段。 我应该为两个表创建模型以获取图像上载按钮吗? 如何在yii中的多个表中插入数据 提前谢谢 更新 ProductCont
products
和product\u image
,以保存产品数据和多个产品图像
产品表
标识、类别、标识、标题、价格、说明
产品形象表
标识、产品标识、图像
我已经如上所述创建了表,并为产品表生成了模型和CRUD。但当我要添加产品页面时,我并没有看到图片上传按钮在添加产品页面中,我只得到了product
表字段。
我应该为两个表创建模型以获取图像上载按钮吗?
如何在yii中的多个表中插入数据
提前谢谢
更新
ProductController:
public function actionCreate()
{
$model = new Products();
$productsImage = new ProductsImage();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'productsImage'=> $productsImage,
]);
}
}
public function actionCreate()
{
$product = new app\models\Product();
$productImages = new app\models\ProductImage();
if($product->load(Yii::$app->request->post()) && $productImages->load(Yii::$app->request->post()) && Model::validateMultiple([$product, $productImages])) {
// your other file processing code
$product->save();
$productImages->save();
// return/redirection statement
}else {
return $this->render(['create', 'product' => $product, 'productImages' => $productImages]);
}
}
My Add product form.php
<div class="products-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'category_id')->dropDownList(['0'=>'Select Parents Category']+
ArrayHelper::map(ProductCategory::find()->all(),'id','category_name')
) ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'price')->textInput() ?>
<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
<?= $form->field($productsImage,'image')->fileInput() ?> //here i am getting error of undefined variable $productsImage
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
//这里我得到了未定义变量$productsImage的错误
Yii2提供了一种处理这种情况的方法:
在您的产品控制器中:
public function actionCreate()
{
$model = new Products();
$productsImage = new ProductsImage();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'productsImage'=> $productsImage,
]);
}
}
public function actionCreate()
{
$product = new app\models\Product();
$productImages = new app\models\ProductImage();
if($product->load(Yii::$app->request->post()) && $productImages->load(Yii::$app->request->post()) && Model::validateMultiple([$product, $productImages])) {
// your other file processing code
$product->save();
$productImages->save();
// return/redirection statement
}else {
return $this->render(['create', 'product' => $product, 'productImages' => $productImages]);
}
}
Yii2提供了一种处理这种情况的方法: 在您的产品控制器中:
public function actionCreate()
{
$model = new Products();
$productsImage = new ProductsImage();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'productsImage'=> $productsImage,
]);
}
}
public function actionCreate()
{
$product = new app\models\Product();
$productImages = new app\models\ProductImage();
if($product->load(Yii::$app->request->post()) && $productImages->load(Yii::$app->request->post()) && Model::validateMultiple([$product, $productImages])) {
// your other file processing code
$product->save();
$productImages->save();
// return/redirection statement
}else {
return $this->render(['create', 'product' => $product, 'productImages' => $productImages]);
}
}
在您的产品表中没有图像字段,因此您无法获得“上载图像”按钮。这里有很多方法可以做到这一点。1)您可以在产品模型中为image button创建公共变量。假设您在产品模型中创建了公共变量,如
public$productImage
,并且在中的视图文件中,您可以使用此代码为图像创建上载按钮
`echo $form->fileField($model,'productImage',array('class' => 'btn'));`
2) 第二个选项,若要创建productImage模型,则需要从product的创建操作传递该对象。假设在产品控制器的创建操作中,您可以创建productImages模型的对象,如下所示
$productImages = new productImages;
您需要像这样在create视图中传递这个模型变量
$this->render('create',array(
'model'=>$model,
'productImages'=> $productImages,
));
这里假设$model是您的产品模型对象。在视图文件中,您可以创建如下代码所示的图像按钮
echo $form->fileField($productImages,'product_image',array('class' => 'btn'));
这里的“product_image”是product_image表的列名。在控制器创建操作中,您将使用product_images post进入post对象,然后以您想要的方式保存数据。我希望您知道现在需要做什么。希望它能帮助您在您的产品表中没有图像字段,因此您无法获得上载图像按钮。这里有很多方法可以做到这一点。1)您可以在产品模型中为image button创建公共变量。假设您在产品模型中创建了公共变量,如
public$productImage
,并且在中的视图文件中,您可以使用此代码为图像创建上载按钮
`echo $form->fileField($model,'productImage',array('class' => 'btn'));`
2) 第二个选项,若要创建productImage模型,则需要从product的创建操作传递该对象。假设在产品控制器的创建操作中,您可以创建productImages模型的对象,如下所示
$productImages = new productImages;
您需要像这样在create视图中传递这个模型变量
$this->render('create',array(
'model'=>$model,
'productImages'=> $productImages,
));
这里假设$model是您的产品模型对象。在视图文件中,您可以创建如下代码所示的图像按钮
echo $form->fileField($productImages,'product_image',array('class' => 'btn'));
这里的“product_image”是product_image表的列名。在控制器创建操作中,您将使用product_images post进入post对象,然后以您想要的方式保存数据。我希望您知道现在需要做什么。希望对您有所帮助谢谢。但在添加产品页面中,我没有获得上载图像选项(文件上载选项)。@DeepParekh请通过提供代码编辑您的问题,以便更容易调试…谢谢。但在添加产品页面中,我没有获得上载图像选项(文件上载选项)。@DeepParekh请通过提供代码编辑您的问题,以便更易于调试…谢谢让我检查并实现。您好@dinesh我使用了您的代码,但我遇到错误“未定义变量:productsImage”在view/_form.phpsee中,我更新了我的问题并共享了控制器代码@DeepParekh我发现了问题您是否在create.php中传递了$productsImage变量,该变量位于产品视图文件夹中如果没有,请传递看起来像是感谢让我检查并实现。Hi@dinesh我使用了您的代码,但我发现错误“未定义变量:productsImage”在view/_form.phpsee中,我更新了我的问题并共享了控制器代码@DeepParekh我发现了一些问题,您是否在create.php中传递了$productsImage变量,该变量位于产品的视图文件夹中?如果没有,请按如下方式传递