CakePHP 3中的REST客户端模型

时间:2015-04-24 20:06:09

标签: php rest cakephp cakephp-3.0

我正在开发一个Cake应用程序,它从数据库以及第三方REST API中提取数据。我想使用我正在尝试访问的各种REST集合的模型(从单个行为继承)来正确实现REST API,但是如果没有相应的数据库表,我无法使我的模型工作。我最初的计划是创建class Software extends Cake\ORM\Entityclass SoftwaresTable extends Cake\ORM\Table,然后使用before*挂钩覆盖各种调用,并将它们重新路由到API而不是数据库。

但是,我已将die()添加到beforeMarshalbeforeRulesbeforeFindbeforeSavebeforeDelete,并且调用了{{}来自控制器的1}}仍然失败并显示消息

  

SQLSTATE [42S02]:未找到基表或视图:1146表'inventory.softwares'不存在

我的方法有误吗?我缺少一些简单的东西?

2 个答案:

答案 0 :(得分:1)

如果您不希望模型由数据库表支持,请不要使用Cake\ORM\Table。而是创建自己的基础模型类,实现Cake\Datasource\RepositoryInterface。然后让你的模型扩展这个基类。

这不是一项微不足道的任务,但是比你试图破解Table类'回调以防止它们连接到数据库更好。

答案 1 :(得分:0)

查看CakePHP 3的源代码,模型似乎与数据库数据源耦合。

在CakePHP 2.x中,您可以定义自己的数据源,因此可以轻松地将其交换为由外部API而不是数据库提供,但我看不到第一眼看到的功能(某人是谁)与CakePHP 3合作的人比我更能说出来。)

说,有一个EntityTrait。您可能最好创建自己的类来表示每个实体,然后将该特征添加到您的类中。例如:

.leaflet-image-layer {
    -webkit-filter: brightness(0.5);
    filter: brightness(0.5);
}