使用PHP REST API(Laravel)在Durandal上实现BreezeJS

使用PHP REST API(Laravel)在Durandal上实现BreezeJS,php,laravel,sails.js,breeze,waterline,Php,Laravel,Sails.js,Breeze,Waterline,我在杜兰达尔2.1写温泉。到现在为止,一直都还不错。然而,在选择正确的数据持久性库与我的PHP Laravel REST API进行通信时,我遇到了很大的困难 Durandal的第一大图书馆是BreezeJS。据说它支持不带oData/ASP.NET实体框架的API。我已经搜索了很多天了,但是我找不到任何合适的资源告诉我如何将BreezeJS与我的基本PHP REST API结合使用 愿望清单如下: 在视图之间持久化数据 验证模型 状态跟踪a.k.a.为延迟/取消更改 使用restapi调用GE

我在杜兰达尔2.1写温泉。到现在为止,一直都还不错。然而,在选择正确的数据持久性库与我的PHP Laravel REST API进行通信时,我遇到了很大的困难

Durandal的第一大图书馆是BreezeJS。据说它支持不带oData/ASP.NET实体框架的API。我已经搜索了很多天了,但是我找不到任何合适的资源告诉我如何将BreezeJS与我的基本PHP REST API结合使用

愿望清单如下:

在视图之间持久化数据 验证模型 状态跟踪a.k.a.为延迟/取消更改 使用restapi调用GET/POST/PUT/DELETE在PUT的情况下,只发送脏东西 RESTAPI如下所示。我将使用联系人+地址+国家/地区模型结构来解释我的API是如何工作的

联系多对多地址 地址属于国家a.k.a.国家有许多地址 以下GET请求:

返回以下结果:

API支持两种使用POST/PUT的方法:

在“数据”属性下以与上面显示的相同的结构发布/放置数据。根据模型的id,后端将决定是否需要创建或更新模型。后端还根据提供的负载自动检测是否需要创建/更新/删除关系。很酷吧-

POST/api/v1/entities

。。。具有以下有效载荷:

[
    {
        "type" : "Contact",
        "data" : {
            "id"   : null, // Will create a new Contact
            "name" : "Malaysia"
        }
    },
    {
        "type" : "Contact",
        "data" : {
            "id"   : 1, // Will update existing Contact
            "name" : "Turner Example"
        }
    },
    {
        "type" : "Address",
        "data" : {
            "id"          : 203, // Will update existing Address
            "city"        : "South Jason",
            "contacts_id" : [1,3,5] // Will set/update the many-to-many relationship between Address ID 203 and Contact ID 1, 3 and 5
        }
    }
]
现在我有几个问题:

这可以在BreezeJS进行吗?或者我应该考虑JayDATA或水线之类的替代方案吗? BreezeJS似乎坚持使用类似查询的语法。我是失去了它的目的还是它毫无用处?如果是这样,是否可以省略类似查询的语法,而仍然使用breezjs或其他替代方法

BreezeJS或替代品将如何处理hasOne、hasMany、belongsTo和belongsToMany以及多态关系

是否存在与我类似的用例的入门?我已经读了很多关于BreezeJS及其替代品的书,但是这些拼图的各个部分还没有在我的脑海中出现。换句话说,我完全迷路了


在那场展会上,有很多样品使用Breeze.js,没有EF和OData。选择你的口味,我会推荐Zza、SPA Ruby简介、Edmunds或ESPN样品。它们都使用我记得的客户端元数据

就发布数据而言,您可以自由地使用允许发布数据的东西自定义AJAX适配器,并且Breeze仍然会将结果解释为实体,因为它们采用正确的JSON结构,或者您可以随时使用自己的扩展扩展扩展Breeze提供的当前AJAX适配器,或者只使用普通的旧AJAX电话。这真的没关系

请记住,Breeze并不喜欢获取/设置数据的方式,只喜欢这样做并用结果更新缓存的实体。要具体回答您的问题——

这能在BreezeJS完成吗?或者我应该考虑JayDATA或水线的替代方案吗? 我应该用这个还是那个这不是一个容易回答的问题。始终为工作选择最佳工具

BreezeJS似乎坚持使用类似查询的语法。我是失去了它的目的还是它毫无用处?如果是这样,是否可以省略类似查询的语法,而仍然使用breezjs或其他替代方法? 默认情况下,Breeze在查询中使用语法,因为默认适配器是WebAPI适配器。请随意使用.withParameters方法创建我们自己的查询主体

BreezeJS或替代品将如何处理hasOne、hasMany、belongsTo和belongsToMany以及多态关系? Breeze支持除多对多之外的所有关系和类型。不过,连接类型对象可以支持多对多关系

是否存在与我类似的用例的入门?我已经读了很多关于BreezeJS及其替代品的书,但是这些拼图的各个部分还没有在我的脑海中出现。换句话说,我完全迷路了。 阅读文档并查看上面的示例。在一些示例中有一个walk-thru的链接,我是ESPN one的作者,因此我知道它可以工作,并且与API实现无关


在那场展会上,有很多样品使用Breeze.js,没有EF和OData。选择你的口味,我会推荐Zza、SPA Ruby简介、Edmunds或ESPN样品。它们都使用我记得的客户端元数据

就发布数据而言,您可以自由地使用允许发布数据的东西自定义AJAX适配器,并且Breeze仍然会将结果解释为实体,因为它们采用正确的JSON结构,或者您可以随时使用自己的扩展扩展扩展Breeze提供的当前AJAX适配器,或者只使用普通的旧AJAX电话。这真的没关系

请记住,Breeze并不喜欢获取/设置数据的方式,只喜欢这样做并用结果更新缓存的实体。具体地 回答你的问题-

这能在BreezeJS完成吗?或者我应该考虑JayDATA或水线的替代方案吗? 我应该用这个还是那个这不是一个容易回答的问题。始终为工作选择最佳工具

BreezeJS似乎坚持使用类似查询的语法。我是失去了它的目的还是它毫无用处?如果是这样,是否可以省略类似查询的语法,而仍然使用breezjs或其他替代方法? 默认情况下,Breeze在查询中使用语法,因为默认适配器是WebAPI适配器。请随意使用.withParameters方法创建我们自己的查询主体

BreezeJS或替代品将如何处理hasOne、hasMany、belongsTo和belongsToMany以及多态关系? Breeze支持除多对多之外的所有关系和类型。不过,连接类型对象可以支持多对多关系

是否存在与我类似的用例的入门?我已经读了很多关于BreezeJS及其替代品的书,但是这些拼图的各个部分还没有在我的脑海中出现。换句话说,我完全迷路了。 阅读文档并查看上面的示例。在一些示例中有一个walk-thru的链接,我是ESPN one的作者,因此我知道它可以工作,并且与API实现无关

他说了什么。普华永道

关于over-the-wire查询语法,Breeze使用了OData现成语法,但可以适应更RESTy的语法。看一看。它转换默认OData语法,例如:

/breeze/orders/?$filter=id eq 1
转换为RESTy语法:

/breeze/orders/1
如果您想支持更丰富的查询,可以这样做,但它目前只支持ORM。你也许可以把它改编成拉威尔/雄辩

还有一个使用breeze.server.php的网站,你可能想浏览一下。

他说的话。普华永道

关于over-the-wire查询语法,Breeze使用了OData现成语法,但可以适应更RESTy的语法。看一看。它转换默认OData语法,例如:

/breeze/orders/?$filter=id eq 1
转换为RESTy语法:

/breeze/orders/1
如果您想支持更丰富的查询,可以这样做,但它目前只支持ORM。你也许可以把它改编成拉威尔/雄辩

还有一个使用breeze.server.php的示例,您可能需要浏览