我想为Phalcon模型创建自己的自定义元数据解析器(因为当前没有索引注释并将一列映射到另一个参数)。不幸的是,当我将映射作为数组返回时:
/**
* @param \Phalcon\Mvc\ModelInterface $model
* @param \Phalcon\DiInterface $di
* @return array
*/
public function getColumnMaps($model, $di)
{
$columns = [];
/** @var \Phalcon\Annotations\Reflection $reflection */
$reflection = $di->get('annotations')->get($model);
foreach ($reflection->getPropertiesAnnotations() as $name => $collection) {
if ($collection->has('Column')) {
$columns[$collection->get('Column')->getNamedArgument('column') ?: $name] = $name;
}
}
return $columns;
}
我发现,该方法中的Phalcon\Mvc\Model\MetaData\Strategy\Annotations
会返回null
。我的结果类似于array
的{{1}},例如。 ID_IN_TABLE => PARAMETER_NAME
使用下划线从数据库映射字段,使用模型中的camel-case字段。当我尝试使用'referer_id' => 'refererId'
,Notice: Undefined index: 0
或Notice: Undefined index: 1
方法时,它会抛出错误find
和count
,例如:
findFirst
我做错了什么?
提前致谢, 大卫。
答案 0 :(得分:0)
getColumnMaps()
的返回值应该如下所示:
array(
0 => $ordered_column_map,
1 => $reverse_column_map
);
其中$ordered_column_map
ID_IN_TABLE => PARAMETER_NAME
amd $reverse_column_map
为array_flip($ordered_column_map)
。