Php 不需要的属性烘焙模型时关联,其中fieldname包含_id";

Php 不需要的属性烘焙模型时关联,其中fieldname包含_id";,php,cakephp,Php,Cakephp,当我在字段名称中间烘焙一个具有“yID”的模型时,它会创建不需要的归属关联。 使用蛋糕烘焙2.4.5 违规字段: ora\u设置\u元数据\u id\u默认值\u为\u sql\u真 sqlserver\u使用\u ansi\u引用的\u标识符 表模式 CREATE TABLE IF NOT EXISTS data_source_names( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(255) DEFAULT

当我在字段名称中间烘焙一个具有“yID”的模型时,它会创建不需要的归属关联。 使用蛋糕烘焙2.4.5

违规字段:

  • ora\u设置\u元数据\u id\u默认值\u为\u sql\u真
  • sqlserver\u使用\u ansi\u引用的\u标识符
表模式

CREATE TABLE IF NOT EXISTS data_source_names(
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) DEFAULT NULL,
  description VARCHAR(255) DEFAULT NULL,
  ora_tsn_service_name VARCHAR(255) DEFAULT NULL,
  ora_enable_result_sets TINYINT(1) DEFAULT NULL,
  ora_enable_query_timeout TINYINT(1) DEFAULT NULL,
  ora_read_only_connection TINYINT(1) DEFAULT NULL,
  ora_enable_closing_cursors TINYINT(1) DEFAULT NULL,
  ora_enable_thread_safety TINYINT(1) DEFAULT NULL,
  ora_batch_autocommit_mode VARCHAR(255) DEFAULT NULL,
  ora_numeric_settings TINYINT(1) DEFAULT NULL,
  ora_fetch_buffer_size TINYINT(1) DEFAULT NULL,
  ora_enable_lobs TINYINT(1) DEFAULT NULL,
  ora_enable_statement_caching TINYINT(1) DEFAULT NULL,
  ora_cache_buffer_size TINYINT(1) DEFAULT NULL,
  ora_enable_failover TINYINT(1) DEFAULT NULL,
  ora_retry INT(10) DEFAULT NULL,
  ora_delay INT(10) DEFAULT NULL,
  ora_bind_timestamp_as_date TINYINT(1) DEFAULT NULL,
  ora_disable_sql_describe_param TINYINT(1) DEFAULT NULL,
  ora_force_sql_wchar_support TINYINT(1) DEFAULT NULL,
  ora_bind_number_as_float TINYINT(1) DEFAULT NULL,
  ora_disable_microsoft_transaction_server TINYINT(1) DEFAULT NULL,
  ora_disable_rule_hint TINYINT(1) DEFAULT NULL,
  ora_set_metadata_id_default_to_sql_true TINYINT(1) DEFAULT NULL,
  ora_enable_exec_syntax TINYINT(1) DEFAULT NULL,
  ora_schema VARCHAR(255) DEFAULT NULL,
  sqlserver_use_sql_server_authentication TINYINT(1) DEFAULT NULL,
  sqlserver_network_libraries VARCHAR(255) DEFAULT NULL,
  sqlserver_dynamically_determine_port TINYINT(1) DEFAULT NULL,
  sqlserver_port_number INT(10) DEFAULT NULL,
  sqlserver_change_the_default_database_to VARCHAR(255) DEFAULT NULL,
  sqlserver_attach_database_filename VARCHAR(255) DEFAULT NULL,
  sqlserver_create_temporary_stored_procedures VARCHAR(255) DEFAULT NULL,
  sqlserver_use_ansi_quoted_identifiers TINYINT(1) DEFAULT NULL,
  sqlserver_use_ansi_nulls_padding_warnings TINYINT(1) DEFAULT NULL,
  sqlserver_use_failover_sql_server TINYINT(1) DEFAULT NULL,
  sqlserver_change_the_language_of_sql_server_system_messages_to VARCHAR(255) DEFAULT NULL,
  sqlserver_use_strong_encryption_for_data TINYINT(1) DEFAULT NULL,
  sqlserver_perform_translation_for_character_data TINYINT(1) DEFAULT NULL,
  sqlserver_use_regional_settings TINYINT(1) DEFAULT NULL,
  sqlserver_save_long_running_queries_to_log_file VARCHAR(255) DEFAULT NULL,
  sqlserver_log_odbc_driver_statistics_to_log_file VARCHAR(255) DEFAULT NULL,
  created DATETIME DEFAULT NULL,
  modified DATETIME DEFAULT NULL,
  created_by INT(10) UNSIGNED DEFAULT NULL,
  modified_by INT(10) UNSIGNED DEFAULT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_unicode_ci;
不想要的东西到协会:

/**
 * belongsTo associations
 *
 * @var array
 */
public $belongsTo = array(
    'OraSetMetadataDefaultToSqlTrue' => array(
        'className' => 'OraSetMetadataDefaultToSqlTrue',
        'foreignKey' => 'ora_set_metadata_id_default_to_sql_true',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'SqlserverUseAnsiQuotedentifiers' => array(
        'className' => 'SqlserverUseAnsiQuotedentifiers',
        'foreignKey' => 'sqlserver_use_ansi_quoted_identifiers',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

这是一个在2.4.7中修复的错误


以前,bake只会在fieldname中的任意位置(而不是在其末尾)搜索字符串
\u id
,这会导致您遇到的错误结果。

这是CakePHP约定的一部分,用于在烘焙时使关系自动。只需删除不需要的
$belongsTo
条目。或者,烘焙时,它不会提示您输入每个关系吗?已经有一段时间了。@AbraCadaver当您指定要烘焙的表时。。。是的,我打算删除不需要的关联,只是想看看这是一个bug还是正常行为。这个bug在2.4.7中已经修复,你应该更新你的CakePHP内核@ndm有效!谢谢你可以发布一个答案,我会接受的。