【发布时间】:2011-08-03 09:50:10
【问题描述】:
我的一个模型中有 country_id 字段,而不是创建一个包含不变国家列表的 countries 表,最好的方法是什么?
我正在考虑使用没有数据库表的模型,但我不知道如何实现。
请帮忙。提前致谢!
【问题讨论】:
标签: cakephp
我的一个模型中有 country_id 字段,而不是创建一个包含不变国家列表的 countries 表,最好的方法是什么?
我正在考虑使用没有数据库表的模型,但我不知道如何实现。
请帮忙。提前致谢!
【问题讨论】:
标签: cakephp
你完全可以使用无表语法:
class ModelWithoutTable extends AppModel
{
var $useTable = false;
}
要让这个 Country Model 无表,但您需要为国家数据模拟数据源(即 XML、YAML、PHP 数组等)。
希望这会有所帮助。
【讨论】:
我建议使用来自社区维护的 CakePHP 的ArraySource Datasources plugin:
master branch
2.0 branch
下载整个插件并将内容提取到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')
);
}
【讨论】:
_baseConfig 或“config”实例。代码中的更多文档将是一个明确的改进。
作为替代方案,如果没有附加到国家/地区的其他数据,基本上,它是哪个国家/地区的 id,您可以将其保留在同一模型中而无需关联。大致如下:
class MyModel extends AppModel {
public static $countries = array(
'Africa', 'America', ..., 'Zululand'
);
public $validate = array(
'country' => array(
'rule' => array('inList', self::$countries),
...
)
)
}
【讨论】: