yii2插入数据库

时间:2016-07-31 21:44:23

标签: php mysql yii2

我试图在yii中将数据插入mysql数据库,但我希望能够访问控制器中的每个输入。   所以我可以将它们放在foreach中,因为它们都有相同的名称但问题随时都存在   我尝试访问输入名称我得到此错误"未定义的索引:主题[主题]" ...就像输入在视图中不存在

这是我的控制器

  public function actionCompose()
    {
     $topic= new Topic();  
     $topic->topic_id = Yii::$app->request->post('Topic','[topic]'); 

    foreach ($_POST["Topic[topic]"] as $key => $top) {
      $top=> $topic;
    }
        if ($topic->load(Yii::$app->request->post()) ) {
            $topic->load($topic);
        $topic->save();
        return $this->refresh();
           }
       return $this->render('compose');
       }

这是我的观点

use yii\widgets\ListView;
use yii\data\ArrayDataProvider;
use app\models\MyProfile;
use app\models\LikeDiscussion;
use yii\widgets\ActiveForm;
use common\models\Topic;
use common\models\Comment;
use common\models\Users;
use common\models\Candidate;
use yii\widgets\Pjax;
use yii\helpers\Html;
use frontend\assets\AppAsset;

$this->title = 'My Yii Application';
?>
<?php $form = ActiveForm::begin(); ?>
    <input type="name"  class="form-control"  required="true" name="Topic[topic]" id="topic" placeholder="topic">
    <input type="name"  class="form-control"  required="true" name="Topic[topic]" id="topic" placeholder="topic">
    <input type="name"  class="form-control"  required="true" name="Topic[topic]" id="topic" placeholder="topic"> 
<?php ActiveForm::end(); ?>  

当我在下面使用它时,它只插入最后的数据。我理解为什么,但我需要插入所有3个输入。任何其他方式。

  public function actionCompose()
    {
     $topic= new Topic();  

        if ($topic->load(Yii::$app->request->post()) ) {
            $topic->load($_POST);
        $topic->save();
        return $this->refresh();
           }
       return $this->render('compose');
    }   

1 个答案:

答案 0 :(得分:0)

Collecting tabular input条中的官方文档中介绍了使用相同类型的多个模型。

以下是一些重要部分。

控制器代码:

<?php

namespace app\controllers;

use Yii;
use yii\base\Model;
use yii\web\Controller;
use app\models\Setting;

class SettingsController extends Controller
{
    // ...

    public function actionUpdate()
    {
        $settings = Setting::find()->indexBy('id')->all();

        if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
            foreach ($settings as $setting) {
                $setting->save(false);
            }
            return $this->redirect('index');
        }

        return $this->render('update', ['settings' => $settings]);
    }
}

查看:

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;

$form = ActiveForm::begin();

foreach ($settings as $index => $setting) {
    echo $form->field($setting, "[$index]value")->label($setting->name);
}

ActiveForm::end();

使用框架,最好使用ActiveField作为显示表单输入的抽象。

根据您的模型进行自定义,就是这样。