Phalcon模型在会话中被破坏了

时间:2015-03-19 16:10:39

标签: session phalcon columnmappings

我在会话中存储模型。我在我的模型中使用列映射,这样如果列名在数据库中发生变化,我就不必在整个应用程序中进行更改。 因此,如果' firstName'改为第一个'在数据库中我可以继续引用" 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'
    ];
}

我没有预见到更改数据库列名称,也不喜欢在数据库和应用程序中使用不同名称引用属性的不一致性。但是,我希望保持灵活性,并确保在我遇到需要进行此更改的情况下,这样做有效。

当列映射键值对不同时,是否有人知道为什么会话会破坏属性值?

1 个答案:

答案 0 :(得分:0)

为什么要在会话中保存对象?这将消耗大量内存。最好只保存一个数组。它将保存新的映射名称。

$user = User::findFirstFromId(1000);
$this->session->set('user') = $user->toArray();