使用列实例化模型

时间:2014-04-25 16:46:53

标签: phalcon

如何实例化模型并获取已在实例中声明的所有列?

$modelA = User::findFirst();
echo $modelA->id; //OK
$modelB = new User();
echo $modelA->id; //Id is undeclared causing errors instead of returning blank

目前我需要手动声明事件onConstruct中的模型列,但我想使用database introspection策略并在使用{{1时获取从表模式模式声明的属性}}

任何人都知道可以帮助我的东西吗?!

1 个答案:

答案 0 :(得分:2)

尝试page上提到的注释策略。

所以,像

class Test extends \Phalcon\Mvc\Model
{

    /**
     * @Primary
     * @Identity
     * @Column(type="integer", nullable=false)
     */
    public $id;
...


从服务容器中获取元数据适配器的实例:

<?php

use Phalcon\Mvc\Model\MetaData\Apc as ApcMetaData,
Phalcon\Mvc\Model\MetaData\Strategy\Annotations as StrategyAnnotations;

$di['modelsMetadata'] = function() {

    // Instantiate a meta-data adapter
    $metaData = new ApcMetaData(array(
        "lifetime" => 86400,
        "prefix"   => "my-prefix"
    ));


获取模型的列,如下所示:

<?php

$test = new Test();

// Get Phalcon\Mvc\Model\Metadata instance
$metaData = $test->getModelsMetaData();

// Get fields names
$attributes = $metaData->getAttributes($test);
print_r($attributes);

// Get fields data types
$dataTypes = $metaData->getDataTypes($test);
print_r($dataTypes);


以上所有内容均可在链接中找到。

另请查看MetaData APIs

希望有所帮助。