0

そのため、私はYiiアプリケーションを継承しました。このアプリケーションを機能させて、科学ファクトシートの管理のための基本的なCRUDを実行しようとしています。YiiとGiixを使用しています

これはエラーです:「PHPの致命的なエラー:58行目の/var/www/idtools.org/www/yii/framework/db/ar/CActiveRecord.phpで許可されたメモリサイズ134217728バイトが使い果たされました(16バイトを割り当てようとしました) 「」

更新アクションは私たちに問題を与えています。コントローラでの更新は次のようになります。

public function actionUpdate($id) {
    $model = $this->loadModel($id, 'Factsheet');

    if (isset($_POST['Factsheet'])) {
        $model->setAttributes($_POST['Factsheet']);

        if ($model->save()) {
            $this->redirect(array('view', 'id' => $model->factsheetid));
        }
    }

    $this->render('update', array(
            'model' => $model,
            ));
}

ビューは次のようになります。

$this->breadcrumbs = array(
    $model->label(2) => array('index'),
    GxHtml::valueEx($model) => array('view', 'id' => GxActiveRecord::extractPkValue($model, true)),
    Yii::t('app', 'Update'),
);

$this->menu = array(
    array('label' => Yii::t('app', 'List') . ' ' . $model->label(2), 'url'=>array('index')),
    array('label' => Yii::t('app', 'Create') . ' ' . $model->label(), 'url'=>array('create')),
    array('label' => Yii::t('app', 'View') . ' ' . $model->label(), 'url'=>array('view', 'id' => GxActiveRecord::extractPkValue($model, true))),
    array('label' => Yii::t('app', 'Manage') . ' ' . $model->label(2), 'url'=>array('admin')),
);
?>

<h1><?php echo Yii::t('app', 'Update') . ' ' . GxHtml::encode($model->label()) . ' ' . GxHtml::encode(GxHtml::valueEx($model)); ?></h1>

<?php
$this->renderPartial('_form', array(
        'model' => $model));
?>

モデル(Giixによって生成されたもの)は次のようになります。Yii:: import('application.models._base.BaseFactsheet');

class Factsheet extends BaseFactsheet
{
    public static function model($className=__CLASS__) {
        return parent::model($className);
    }
}   

モデルはベースを拡張します:抽象クラスBaseFactsheetはGxActiveRecordを拡張します{

    public static function model($className=__CLASS__) {
        return parent::model($className);
    }

    public function tableName() {
        return 'factsheet';
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Factsheet|Factsheets', $n);
    }

    public static function representingColumn() {
        return 'name';
    }

    public function rules() {
        return array(
            array('name, toolid', 'required'),
            array('weight', 'numerical', 'integerOnly'=>true),
            array('name, toolid', 'length', 'max'=>255),
            array('inputdate', 'safe'),
            array('weight, inputdate', 'default', 'setOnEmpty' => true, 'value' => null),
            array('factsheetid, name, toolid, weight, inputdate', 'safe', 'on'=>'search'),
        );
    }

    public function relations() {
        return array(
            'tool' => array(self::BELONGS_TO, 'Tool', 'toolid'),
            'factsheetcontents' => array(self::HAS_MANY, 'Factsheetcontent', 'factsheetid'),
            'factsheetimages' => array(self::HAS_MANY, 'Factsheetimages', 'factsheetid'),
        );
    }

    public function pivotModels() {
        return array(
        );
    }

    public function attributeLabels() {
        return array(
            'factsheetid' => Yii::t('app', 'Factsheetid'),
            'name' => Yii::t('app', 'Name'),
            'toolid' => null,
            'weight' => Yii::t('app', 'Weight'),
            'inputdate' => Yii::t('app', 'Inputdate'),
            'tool' => null,
            'factsheetcontents' => null,
            'factsheetimages' => null,
        );
    }

    public function search() {
        $criteria = new CDbCriteria;

        $criteria->compare('factsheetid', $this->factsheetid);
        $criteria->compare('name', $this->name, true);
        $criteria->compare('toolid', $this->toolid);
        $criteria->compare('weight', $this->weight);
        $criteria->compare('inputdate', $this->inputdate, true);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }
}

私の問題を解決する方法はありますか?PHPにすべてのシステムメモリ(memory_init(-1))を割り当てましたが、ヒープダンプエラーが発生しました。私はYiiにまったく慣れていないので、助けが必要です。どこを見ればよいか教えてください。

4

1 に答える 1

0

通常、このエラーは_form部分ファイルの一部として発生します。GxHtmlがドロップダウンメニューを生成しているときに、私はよくそれに遭遇しました。

GiiXは、データベースからすべてのモデルを適切に引き出し、ドロップダウンに適切なキー/名前を取得するのにそれほど効率的ではありません。したがって、多くの場合、手動で取得するフィールドを指定する方が適切です。

_formコード(または少なくとも関連部分)を投稿すると、その行を指摘できます。

于 2012-04-23T23:30:24.420 に答える