私はデータベース プログラミングにかなり慣れていないので、基本的な CRUD アプリを動かそうとしています。クラディを使用!データ ディクショナリを読み取り、各テーブルに基づいてフォームを作成する非常に限られたアプリケーションがあります。
いくつかのテーブルには広範な外部キー エントリが含まれているため、キーが参照するエントリとして各外部キー列を表示するために必要な結合操作をアプリで実行したいと考えています。汚い!この機能があると主張しています-CGI::AutoForm
フォームの作成に使用します。フォームを起動して実行するには、参照テーブルに列ごとにエントリを提供する必要がありますui_table_column
。
すべてのテーブルと関連する列に対して SQL ステートメントを記述するのではなく、1 つの列に対して適切なプロセスを実行しようとしています。
このテーブルの私の DDL から:
CONSTRAINT `fk_Holder_Sample1`
FOREIGN KEY (`sample_id`)
REFERENCES `sample` (`sample_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
そして、AutoForm SQL エントリを設定する私の試み:
INSERT INTO ui_table_column (
table_name, field_name, appear_order, heading, searchable, updatable, insertable, input_control_type, multi_insert_delimiter,
search_control_type, search_mult_select, use_data_dict, datatype, default_value, required, input_size, input_maxlength, brief_heading,
alt_mask_field, mask_table_name, mask_field_name, id_field_name, no_cache, radio_checkbox_cols, field_group, element_attrs, help_summary)
VALUES (
'SAMPLE', 'SAMPLE_ID', 10, 'ID', 'Y', 'N', 'N', 'TEXT', NULL,
'SELECT', 4, 'Y', NULL, NULL, NULL, NULL, NULL, NULL,
NULL, 'sample', 'name', 'sample_id', 'Y', NULL, NULL, NULL, NULL);
INSERT INTO ui_table_column (
table_name, field_name, appear_order, heading, searchable, updatable, insertable, input_control_type, multi_insert_delimiter,
search_control_type, search_mult_select, use_data_dict, datatype, default_value, required, input_size, input_maxlength, brief_heading,
alt_mask_field, mask_table_name, mask_field_name, id_field_name, no_cache, radio_checkbox_cols, field_group, element_attrs, help_summary)
VALUES (
'SAMPLE', 'SAMPLE_NAME', 20, 'Name', 'Y', 'Y', 'Y', 'TEXT', NULL,
'MATCH TEXT', NULL, 'Y', NULL, NULL, NULL, NULL, NULL, 'Name',
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ui_table_column (
table_name, field_name, appear_order, heading, searchable, updatable, insertable, input_control_type, multi_insert_delimiter,
search_control_type, search_mult_select, use_data_dict, datatype, default_value, required, input_size, input_maxlength, brief_heading,
alt_mask_field, mask_table_name, mask_field_name, id_field_name, no_cache, radio_checkbox_cols, field_group, element_attrs, help_summary)
VALUES (
'HOLDER', 'SAMPLE_ID', 30, 'sample', 'Y', 'Y', 'Y', 'SELECT', NULL,
'SELECT', 4, 'Y', NULL, NULL, NULL, NULL, NULL, 'Sample',
NULL, 'sample', 'NAME', 'SAMPLE_ID', 'Y', NULL, NULL, NULL, NULL);
アプリ ページを更新しても (ブラウザを更新して を呼び出すだけapachectl
)、変更はありません。つまり、Holder ページのフィールドとしてまだ Sample ID が表示されます。
誰かがこれで成功したか、私が間違っていることについて私にアドバイスできますか?
編集: SO からの沈黙は、この特定のフレームワークが広く使用されていないことを示していると考えています。それでは、私の質問を少し開いて、どのような解決策を使用したかをお尋ねしたいと思います。私は実際にCatalyst::Plugin::AutoCRUDを試しています。