无法在ActiveRecord Yii2中插入数据库

时间:2015-09-16 04:38:45

标签: php mysql activerecord yii2

我不知道错误但我无法插入数据库。

这就是我在模型中得到的。

warranty.php

<?php

    namespace app\models;

    use Yii;
    use yii\db\ActiveRecord;
    use yii\behaviors\TimestampBehavior;
    use yii\db\Expression;
    use yii\helpers\VarDumper;
    /**
     * This is the model class for table "warrantytwo".
     *
     * @property integer $id
     * @property string $item_no
     * @property string $warranty_date
     * @property string $date
     * @property integer $created_by
     * @property string $tstamp
     */
    class Warrantytwo extends ActiveRecord
    {
        /**
         * @inheritdoc
         */
        public static function tableName()
        {
            return 'warrantytwo';
        }

        public function behaviors()
        {
            return [
                [
                    'class' => TimestampBehavior::className(),
                    'createdAtAttribute' => 'tstamp',
                    'updatedAtAttribute' => false,
                    'value' => new Expression('NOW()'),
                ],
            ];
        }

        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [['item_no', 'warranty_date'], 'required'],

                [['warranty_date', 'date'], 'string'],

                ['created_by', 'default', 'value' => 'none'],

                [['created_by'], 'integer'],

                [['warranty_date', 'date','tstamp'], 'safe'],

                [['item_no'], 'string', 'max' => 100]
            ];
        }

        /**
         * @inheritdoc
         */
        public function attributeLabels()
        {
            return [
                'id' => 'ID',
                'item_no' => 'Item No.',
                'warranty_date' => 'Warranty Date',
                'date' => 'Date',
                'created_by' => 'Created By',
                'tstamp' => 'tstamp',
            ];
        }

        public function addWarrantytwo()
        {
            if ($this->validate()) {
                $Warrantytwo = new Warrantytwo();
                $Warrantytwo->item_no = $this->item_no;
                $Warrantytwo->warranty_date = $this->warranty_date;
                $Warrantytwo->created_by = 'admin1';
                $Warrantytwo->date = date('Y-m-d H:i:s');
                //$Warrantytwo->touch('tstamp');

                if ($Warrantytwo->save()) 
                {
                    return $Warrantytwo;
                }else {
                    VarDumper::dump($Warrantytwo->getErrors());
                }
            }

            //return null;
        }
    }

Controller.php这样

public function actionWarranty()
    {
        //$model= new WarrantyDate();
        $model= new Warrantytwo();

        if ($model->load(Yii::$app->request->post()) && $model->addWarrantytwo()) {
            return $this->redirect(['warranty']);
        } 
        else {
        return $this->render('warranty', [
            'model' => $model,
            ]);
        }
    }

以我的观点/表格

 <?php $form = ActiveForm::begin([
      'id' => 'new-warranty-form',
      //'options' => ['class' => 'form-horizontal'], //for yii\ActiveForm
        'type' => ActiveForm::TYPE_HORIZONTAL, //for krajee\ActiveForm
        'formConfig' => ['labelSpan' => 4, 'deviceSize' => ActiveForm::SIZE_SMALL]  ]); ?>
                <div class="form-horizontal">

  <?= $form->field($model, 'item_no', 
        ['addon' => ['append' => ['content'=> '<a href="#w" onClick="sample()"><i class="glyphicon glyphicon-search"></i></a>']]    ]); ?>                          

    <?= $form->field($model, 'warranty_date')-> widget(DatePicker::classname(),
    [
    'options' => ['placeholder' => 'Date Claimed'],
    'pluginOptions' => [ 'autoclose'=>true ]
                ]); ?>

    </div>
    <div class="col-sm-offset-5 col-md-9">

     <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'warranty-button']) ?>

  <?= Html::resetButton('Reset', ['class' => 'btn btn-default']); ?>
     </div>

     <?php ActiveForm::end(); ?>

它没有给出任何错误但是当我在数据库上检查它时,没有添加任何内容。我希望有人能帮助我。谢谢。我是YII2的新手,所以我仍然没有得到它。

1 个答案:

答案 0 :(得分:2)

由于您必须以这种方式确定问题在什么情况下发生。 (有时它会产生一些混乱,因为validate()总是返回一些东西)

    public function addWarrantytwo()
    {
        if ($this->validate()) {
            $Warrantytwo = new Warrantytwo();
            $Warrantytwo->item_no = $this->item_no;
            $Warrantytwo->warranty_date = $this->warranty_date;
            $Warrantytwo->created_by = 'admin1';
            $Warrantytwo->date = date('Y-m-d H:i:s');
            //$Warrantytwo->touch('tstamp');

            if ($Warrantytwo->save(false))   // try save without validation 
            {
                return $Warrantytwo;
            }else {
                VarDumper::dump($Warrantytwo->getErrors());
                exit;
            }
        }
        else {
            VarDumper::dump($this->validate());  // check for the correct flow
            exit;
        }

        //return null;
    }