gpt4 book ai didi

php - yii2 插入数据库

转载 作者:行者123 更新时间:2023-11-29 03:24:27 25 4
gpt4 key购买 nike

我正在尝试将数据插入到 yii 中的 mysql 数据库中,但我希望能够访问 Controller 中的每个输入。 所以我可以将它们放在 foreach 中,因为它们都具有相同的名称,但问题是任何时候 我尝试访问输入名称我收到此错误“未定义索引:主题[主题]”...就像 View 中不存在输入

这是我的 Controller

  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');
}

最佳答案

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

这里是一些重要的部分。

Controller 代码:

<?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 作为显示表单输入的抽象。

根据您的模型对其进行自定义,仅此而已。

关于php - yii2 插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38688645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com