0

私のデータベースには、テキストタイプの列を持つテーブルがあります。この列は、シリアル化された配列を保持します。この配列は別のアプリケーションによって読み取られて保存され、その形式を変更することはできません。

シリアル化された配列は、2つの異なる言語で選択されたデータベース名、テーブル名、および列名を保持します。

このシリアル化された配列を変更できるコントローラー、エンティティ、フォームなどをSymfony2に記述したいと思います。

シリアル化された各配列に含まれる可能性のあるすべてのデータベース名、テーブル名、および列名の配列を提供できる、使用できるスクリプトがあります。

目標は、ユーザーがデータベース、テーブル、および列を選択できるチェックボックスのリストを表示することです。次に、彼らは名前の翻訳を行うことができます。

すべてのデータは非常に揮発性であるため、Symfony2でもこれが可能かどうかはわかりません。

別の方法は、次のエンティティを作成することです:{データベース、テーブル、列}そしてそれを完全にOOで実行します。そして、シリアル化された配列の選択範囲を、そのように期待する外部アプリケーションにエクスポートできます...

君たちは私の推論に従うことができますか?ここで戦略を見落としていますか...?

追加:配列は、5次までのネストされた配列です。データベースには、列を含むテーブルが含まれています。そして、すべてのアイテムには元の名前と翻訳された名前があります。

4

2 に答える 2

0

私はあなたがあなた自身のゲストに答えたと思います:

An alternative is to make the following entities: { database, table, column } and do it fully OO.
And then I could export a selection in a serialized array, to the external application that 
expects it that way...

テーブルにマップされたマスターエンティティから始めます。

class SomeEntity
{
    protected $serializedInfo;

    public getDatabases()
    {
        // Process serializedInfo into an array of database objects and return

次に、SomeEntityをSomeEntityFormTypeに渡します。これにより、DatabaseFormTypesのコレクションが使用されます。DatabaseFormTypeには、TableFormTypesなどのコレクションがあります。

最終的にフォームが投稿され、SomeEntityが更新されます。次に、投稿する前にシリアル化します。簡単なはずです。ユーザーに情報を追加してもらいたい場合は少し難しいかもしれませんが、それでも実行可能です。

于 2012-12-18T17:18:32.910 に答える
0

本当に遅いのは知っていますが、大学で忙しかったので早く答えられませんでした

これが最善だと思います

配列を含む列を含むテーブルがfooと呼ばれると想像してください。

したがって、Fooと呼ばれ、好きな名前のフィールド(タイプテキスト)を含むエンティティを作成します。

ここで注意が必要なのは、必要なすべての関係を含むDatabaseというオブジェクトを作成することです(テーブルオブジェクトとテーブルオブジェクトから列オブジェクトへ)

したがって、フィールドタイプをテキストとして作成するように指示したとしても、オブジェクトデータベースをこのフィールドにパスします。

だからそれがどのように機能するのか

Databaseオブジェクトには__stringメソッドがあり、オブジェクトのシリアル化された配列を希望どおりに返します。

このように、doctrine2がデータベースオブジェクトをテキストフィールドに保存しようとすると、__stringメソッドが返す文字列として保存されます。

そして、シリアル化された配列をデータベースオブジェクトに変換するgetDatabaseがあります

これは私が持っている考えであり、それがあなたに合っているかどうかはわかりません

于 2013-01-05T13:27:00.743 に答える