Phalcon - 自定义模型元数据策略

时间:2014-02-05 12:56:12

标签: php annotations models phalcon

我想为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: 0Notice: Undefined index: 1方法时,它会抛出错误findcount,例如:

findFirst

我做错了什么?

提前致谢, 大卫。

1 个答案:

答案 0 :(得分:0)

getColumnMaps()的返回值应该如下所示:

array(
    0 => $ordered_column_map,
    1 => $reverse_column_map
);

其中$ordered_column_map ID_IN_TABLE => PARAMETER_NAME amd $reverse_column_maparray_flip($ordered_column_map)