0

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

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

Relation: Order (has many)> OrderItem (has many)> Item.

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

代码:

$order->save();

错误:

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

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

4

1 回答 1

1

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

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

你还在使用 Doctrine 1.2 吗?我认为在 Doctrine 中使用视图很棘手Link

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

拥有:订购多对多 OrderItem 多对一商品。

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

于 2013-03-06T22:38:13.980 回答