1

ルールを定義するとき、フィールド名はデータベースの列名と一致する必要がありますか?

フィールド名と列名が一致しない場合、ルールが表示され、データベースに何も保存されないという問題があります。

機能するもの:

データベース

user_id | username

分野

<?php echo Form::input('username', $username, array('id' => 'username')); ?><?php echo Arr::get($errors, 'username');?>

モデル

class Model_User extends ORM {

    protected $_primary_key = 'user_id';

    public function rules()
    {
        return array(
            'username' => array(
                array('not_empty'),
            ),
        );
    }
}

メッセージ

return array(
    'username' => array(
        'not_empty' => 'You must provide a username.',
    ),
);

機能しないもの:

データベース

user_id | username

分野

<?php echo Form::input('membername', $username, array('id' => 'username')); ?><?php echo Arr::get($errors, 'membername');?>

モデル

class Model_User extends ORM {

    protected $_primary_key = 'user_id';

    public function rules()
    {
        return array(
            'membername' => array(
                array('not_empty'),
            ),
        );
    }
}

メッセージ

return array(
    'membername' => array(
        'not_empty' => 'You must provide a username.',
    ),
);

フィールド名をユーザー名以外に変更すると、ルール機能が正しく動作しないようです。

ルールを適用しない場合、ユーザー名を別のものに変更しても、データをデータベースに保存する際に問題は発生しません。

4

1 に答える 1

0

データベースの列名を別の内部名にマッピングすることはできません。ルールやラベルなどの設定にも同じ列名が使用されます。なぜ列名を変更したいのかわかりません。開発者の期待には悪いでしょう。その場合、テーブルの列の名前を変更することをお勧めします。

Kohana ORM がテーブルの列を制御するために提供する唯一の方法は、使用する列名の配列をホワイトリストに登録することです。ORM モジュールでこの変数を使用します。

protected $_table_columns = array('column1','column2');
于 2013-02-02T14:34:54.167 に答える