Doctrine ORMとSymfonyで、通性的な1対1の関係をどのように実装する必要がありますか?データベースにいくつかのフォルダが表示されているとします。各フォルダには、デフォルトのアイコンまたは別のテーブルに表示されるカスタムアイコンを含めることができます。この関係はスキーマファイルでどのように記述されるべきですか?与えられたフォルダの関係の場合に発生するか発生しないかをどのように知ることができますか?
私自身は推測する必要がありますが、それぞれがあまり良くないようです:
folder_icon
1)テーブルにid
列とfolder_icon_id
列を含むテーブルを定義しfolder
、これらの列を外部キーでリンクするとします。NULLが含まれている場合folder_icon_id
、関係は発生しません。整数値が含まれている場合は、それぞれのフォルダアイコンを指します。この方法で実装し、$ folder-> getFolderIcon()などを使用してフォルダーアイコンを取得しようとすると、フィールドがnullに設定されたFolderIconクラスのインスタンスが取得されます(NULL、FALSE、Doctrine_Nullなどを取得することを期待します)。 )。なんでそうなの?返されたオブジェクトが「実際の」フォルダアイコンではないかどうかを確認するにはどうすればよいですか?
2)前と同様の方法を使用していると仮定しますfolder_icon
が、テーブルの最初の行をデフォルトアイコンとして定義し、カスタムアイコンが選択されていない各フォルダーがこの最初の行に関連付けられるようにします。この場合、FolderIconクラスのダミーインスタンスを取得しても問題はありません。ただし、カスタムフォルダアイコンがデータベースから削除されると問題が発生します。これは、削除されたアイコンを使用するフォルダをデフォルトのアイコンに関連付けるonDelete動作「SET1」がないためです。
この問題はどのように解決する必要がありますか?スキーマファイルでこの種の関係を定義する適切な方法は何ですか?