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 でのビューの使用はトリッキーだと思いますリンク

また、エンティティで関係を宣言した方法からエラーが発生する可能性があります。

所有: 多対多の OrderItem 多対一のアイテムを注文します。

関係 OrderItem > Item が単方向であり、OrderItem が所有側であることを確認する必要があります。

于 2013-03-06T22:38:13.980 に答える