如何在CakePHP上使用没有数据库且具有关联的模型?

如何在CakePHP上使用没有数据库且具有关联的模型?,cakephp,Cakephp,我的一个模型中有一个country\u id字段,与其创建一个countries表,其中包含一个不变的国家列表,不如用什么方法来实现这一点 我正在考虑使用一个没有数据库表的模型,但我不知道如何实现它 请帮忙。提前谢谢 我建议使用社区维护的CakePHP提供的ArraySource: CakePHP 1.3.x-请参阅 CakePHP 2.x-请参阅 下载整个插件并将内容解压缩到app/plugins/datasources 在app/config/database.php中定义到数据源的连接

我的一个模型中有一个
country\u id
字段,与其创建一个
countries
表,其中包含一个不变的国家列表,不如用什么方法来实现这一点

我正在考虑使用一个没有数据库表的模型,但我不知道如何实现它


请帮忙。提前谢谢

我建议使用社区维护的CakePHP提供的
ArraySource

  • CakePHP 1.3.x-请参阅
  • CakePHP 2.x-请参阅
下载整个插件并将内容解压缩到
app/plugins/datasources

app/config/database.php
中定义到数据源的连接:

public $array = array('datasource' => 'Datasources.array');
这将允许您通过在模型中定义记录来模拟表:

class Country extends AppModel {

    public $useDbConfig = 'array';

    public $records = array(
        array('id' => 1, 'name' => 'Test record')
    );

}

作为替代方案,如果没有附加到国家的其他数据,基本上,除了它是哪个国家的id之外,您可能可以将其保存在同一个模型中,而无需关联。大致如下:

class MyModel extends AppModel {

    public static $countries = array(
        'Africa', 'America', ..., 'Zululand'
    );

    public $validate = array(
        'country' => array(
            'rule' => array('inList', self::$countries),
            ...
        )
    )

}

您完全可以使用无表语法:

class ModelWithoutTable extends AppModel
{
    var $useTable = false;
}
要使此国家/地区模型无表化,您需要模拟国家/地区数据的数据源(即XML、YAML、PHP数组等)


希望这有帮助

除了存储库之外,唯一的其他文档位于docblocks中,用于几个数据源(|)。要查找每个数据源的配置选项,请查找
\u baseConfig
或“config”的实例。在代码中添加更多文档将是一个明显的改进。绝对是一个不错的方法。我还不知道那件事。我去看看。直到现在我都是这样做的:我从来没有去过“非洲”这个国家谢谢工作很有魅力。:)