1

セッションにモデルを保存しています。モデルで列マップを使用しているため、データベースで列名が変更された場合でも、アプリケーション全体で変更を加える必要はありません。したがって、データベースで「firstName」が「first」に変更された場合、アプリケーション全体で「firstName」を参照し続けることができます。私のテストでは、列マップのキーと値が等しくない限り、プロパティは常にセッションに null として格納されることがわかりました。

これはうまくいきます:

/**
 * Independent Column Mapping.
 *
 * Keys reference property in database
 * Values reference property application-wide
 */

// db column name = 'firstName'
public static function columnMap()
{
    return
    [
        'firstName' => 'firstName'
    ];
}

これはうまくいきます:

// db column name = 'first'
public static function columnMap()
{
    return
    [
        'first' => 'first'
    ];
}

これは失敗します:

// db column name = 'first'
public static function columnMap()
{
    return
    [
        'first' => 'firstName'
    ];
}

私は、データベースの列名が変更されるとは考えていません。また、データベースとアプリケーションで異なる名前でプロパティを参照するという矛盾も好きではありません。ただし、この変更が必要なシナリオに遭遇した場合に備えて、柔軟性を維持し、これが機能することを確認したいと思います.

列マップのキーと値のペアが異なる場合に、セッションがプロパティ値を上書きする理由を知っている人はいますか?

4

1 に答える 1

0

オブジェクトをセッションに保存するのはなぜですか? これは大量のメモリを消費します。配列のみを保存することをお勧めします。そして、新しいマップ名が保存されます。

$user = User::findFirstFromId(1000);
$this->session->set('user') = $user->toArray();
于 2015-03-31T19:40:19.527 に答える