私は、Web サイトのすべてのページを追加/更新/削除/再配置できる CMS を作成しています。 page_version 必要に応じてこのバージョンに戻すことができます。また、誰かが編集中のページはロックされ、他のユーザーが同時に編集することはできません。各ページは親ページを持つこともでき、各ページは rewrite_rules テーブルとの別の oneToMany 関係を使用して複数の書き換えルールを持つことができます。ただし、Symfony2 と Doctrine エンティティ関係を使用してマッピングするときに、それらをどのテーブルに配置する必要があるか、オブジェクトとしてどのように使用できるかについて、私が確信していないフィールドがいくつかあります。現時点での私のテーブルは次のとおりです。
page table
id
parent_id
locked
page_version table
page_id
title
content
enabled
position
rewrite_rules table
id
page_id
rewrite
canonical
私の質問は次のとおりです。
- position フィールドは page テーブルまたは page_version テーブル内にある必要がありますか? 各ページの位置は、ページのバージョンによって変わりません。これは、すべてのページのリスト ビューでのみ変更されます。これは、たとえば、「About Us」ページに 5 つの子ページがある場合、フロント エンドで出力をレンダリングするためにこれらを並べ替えることができるようにするためです。
- rewrite_rules テーブルを page テーブルまたは page_version テーブルに結合する必要がありますか? 繰り返しますが、これはバージョンではなくページにリンクされます。誰かがページのバージョンを編集して書き換えルールを追加すると、そのバージョンのページだけでなく、そのページにも適用されます。つまり、古いバージョンに戻す場合でも、書き換えルールはこのバージョンに適用されます。
ページ バージョンをアクティブ ページにするには、これをページ テーブルまたは page_version テーブルの単純なフィールドにする必要がありますか?
ありがとう
アップデート
これが私の Page および PageVersion クラスです。
class Page { /** * @ORM\OneToMany(targetEntity="PageVersion", mappedBy="page") */ private $pageversions; }
class PageVersion
{
/**
* @var page
*
* @ORM\ManyToOne(targetEntity="Page", inversedBy="pageversions")
*
*/
private $page;
}