使用数组实现Cakephp模型

3
CakePHP Cookbook中states提到,模型可以使用文件(例如csv)而不是实际的数据库表,但我找不到任何实现方式。
我想知道在CakePHP中是否可以使用数据数组作为模型,因为我有一组相当静态的数据对我与另一个表格的关系很重要,但创建完整的表格并不太合适。
是否可以使用数组实现CakePHP模型?

1
如果您已经在使用数据库,我建议为这个静态数据集创建一个表。您的数据库不会介意,而且比使用数组“伪造”表要更加“干净”。 - Christian Strang
2个回答

4

使用自定义数据源应该很容易实现。您只需要在其中实现少量读取和/或写入数据的方法,这些方法可以从数组中获取。由于每个方法都将模型实例作为其第一个参数传递,因此您可以将实际数据保存在模型中:

class MyModel extends AppModel {
    public $useDbConfig = 'array';
    public $staticData = array( /* data here */ );
}



// in the DataSource:
public function read($model, $queryData = array()) {
    $data = $model->staticData;
    // do something with $data
}

关于“in the DataSource”...它在哪里(路径)?我应该在哪个文件中使用上面的read()函数?我认为这是一个控制器函数,但我不确定。 - Peter Krauss
请阅读有关自定义数据源的链接手册章节。 - deceze
答案中的链接已经失效了。有人可以提供有效的链接吗? - wenbert

1

如果您想要,可以使用http://github.com/jrbasso/array_datasource,这是一个数据源,用于将模型映射到数组数据,从而使您能够透明地将这些模型与基于数据库的模型相关联。

这使您可以使用数组源作为模型,而无需除提供数组数据和在模型中设置数据源名称之外进行任何操作。

阅读文档以获取一些示例-它真的很容易使用,代码也很容易理解。它还允许您对模型执行正常的查找*操作、条件等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接