【发布时间】:2015-05-22 20:47:39
【问题描述】:
我正在会话中存储一个模型。我在我的模型中使用列映射,因此如果数据库中的列名发生更改,我不必在整个应用程序中进行更改。 因此,如果数据库中的“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'
];
}
我预计不会更改数据库列名称,我也不喜欢在数据库和应用程序中通过不同名称引用属性的不一致。不过,我想保持灵活性,并确保在遇到需要进行此更改的情况时,此方法可以正常工作。
有谁知道为什么当列映射键值对不同时会话会破坏属性值?
【问题讨论】:
标签: session phalcon columnmappings