Php 如何使条令不尝试更新表?

Php 如何使条令不尝试更新表?,php,oracle,view,doctrine,doctrine-1.2,Php,Oracle,View,Doctrine,Doctrine 1.2,我正在从事一个项目,在这个项目中,我们使用视图在另一个系统之间创建一个接口/层,该系统是一个数据源,但没有匹配的模型。这样,在我的系统中,这些视图实际上是模型。到目前为止,一切都运转良好,除了这一部分: ------------------------------- |Table |Table |View | ------------------------------- |Order > |OrderItem > |Item | --------------

我正在从事一个项目,在这个项目中,我们使用视图在另一个系统之间创建一个接口/层,该系统是一个数据源,但没有匹配的模型。这样,在我的系统中,这些视图实际上是模型。到目前为止,一切都运转良好,除了这一部分:

-------------------------------
|Table    |Table        |View |
-------------------------------
|Order  > |OrderItem  > |Item |
-------------------------------

Relation: Order (has many)> OrderItem (has many)> Item.
我最近遇到了一个问题,它试图保存表的整个关系集(顺序)。系统应保存订单及其项目(订单项目)。但不知何故,save最终会在作为视图的项模型上进行更新,并返回此错误,显然:

代码:

错误:

Data manipulation operation not legal on this view : UPDATE ITEM (...)

有没有办法跟踪它,强制它不发生,或者将它设置为只读模型?

当视图由来自不同表的元素组成时,mysql中会发生此错误

如果编辑同一表中的列,则可以,但如果同一查询尝试编辑不同表的列,则会出现错误

你还在使用第1.2条吗? 我认为将视图与学说结合使用是很棘手的

错误也可能来自您在实体上声明关系的方式:

具有: 订购多对多OrderItem多对一项目


您应该确保采用OrderItem>Item是的关系,并且OrderItem是拥有方。

Hi-CesarScur。很难理解你的问题。你可以添加一些示例代码吗?这也是PHP吗?然后可能会将它标记为PHP,因为它是一个更流行的标记——以获得更多的关注。我怎样才能让事情变得更清楚呢?我正在使用oracle作为数据库。我看到了学说的观点,但是,在我的例子中,这个观点实际上是一个模型。我有附加的商业规则。使用db视图只是连接其他系统的一种方式。我可以使用一个过程来为一个常规表提供数据,但问题是:我不想更新这个表。我的描述确实是错误的,它是has many=/Ok,但您得到的错误是因为Doctrine以Oracle不允许的方式编辑视图i。以下是错误原因和解决方案:。您能在save()之前发布流程吗?oracle指出的解决方案正是我要寻找的,这是一种强制doctrine不尝试更新视图的方法,因为我没有调用直接项目保存,也无法预测发生这种情况的原因。只是在任何情况下都不应该。我不能过去,因为它是业务逻辑,有上千行长。好的,所以你必须创建一个方法(例如:save_order())来执行一个查询来管理save。这样你就能确切地知道发生了什么。
Data manipulation operation not legal on this view : UPDATE ITEM (...)