1

我对数据库编程相当陌生,正在尝试开发一个基本的 CRUD 应用程序。使用粗鲁!我有一个非常有限的应用程序,它读取数据字典并根据每个表创建表单。

由于几个表具有广泛的外键条目,我希望我的应用程序执行连接操作,这对于每个外键列都显示为键所指的条目是必要的。粗鲁!声称拥有这种能力 - 它CGI::AutoForm用于创建表单。要启动并运行表单,您必须逐列向引用表提供条目ui_table_column

我没有为我的所有表及其附属列编写 SQL 语句,而是试图为单个列正确处理该过程。

从我的这个表的 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

4

2 回答 2

2

在学习者用另一个框架结束后回答,但为了将来参考,这些字段必须为大写。

对于上面的示例,第一个和第三个插入语句将具有: (alt_mask_field, mask_table_name, mask_field_name, id_field_name) = (NULL,'SAMPLE','NAME','SAMPLE_ID')。

于 2012-05-23T22:38:03.367 回答
0

我最终在编辑中使用了该模块。我将把它标记为明天关闭。

于 2012-05-20T14:09:27.843 回答