{"record":{"id":"95fd2ad4bf7f746d","repo":"phalcon/cphalcon","slug":"referenced-table-is-required","errorCode":null,"errorMessage":"Referenced table is required","messagePattern":"Referenced table is required","errorType":"exception","errorClass":"Phalcon\\Db\\Exceptions\\ReferencedTableRequired","httpStatus":null,"severity":"error","filePath":"phalcon/Db/Reference.zep","lineNumber":108,"sourceCode":"    /**\n     * ON UPDATE\n     *\n     * @var string\n     */\n    protected onUpdate;\n\n    /**\n     * Phalcon\\Db\\Reference constructor\n     */\n    public function __construct( string name,  array definition)\n    {\n        var columns, schema, referencedTable, referencedSchema,\n            referencedColumns, onDelete, onUpdate;\n\n        let this->name = name;\n\n        if unlikely !fetch referencedTable, definition[\"referencedTable\"] {\n            throw new ReferencedTableRequired();\n        }\n\n        let this->referencedTable = referencedTable;\n\n        if unlikely !fetch columns, definition[\"columns\"] {\n            throw new ForeignKeyColumnsRequired();\n        }\n\n        let this->columns = columns;\n\n        if unlikely !fetch referencedColumns, definition[\"referencedColumns\"] {\n            throw new ReferencedColumnsRequired();\n        }\n\n        let this->referencedColumns = referencedColumns;\n\n        if fetch schema, definition[\"schema\"] {\n            let this->schemaName = schema;","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/phalcon/cphalcon/blob/b7419de9cd0a8a3f48441ead84c9f8415d463e25/phalcon/Db/Reference.zep#L90-L126","documentation":"Phalcon\\Db\\Reference models a foreign key for DDL generation. Its constructor validates the definition array in order and requires 'referencedTable' first; when that key is absent, ReferencedTableRequired is thrown. A foreign key with no target table cannot be expressed in SQL.","triggerScenarios":"new Reference('fk_posts_user', ['columns' => ['user_id'], 'referencedColumns' => ['id']]) missing 'referencedTable'; typo'd keys such as 'referenceTable' or 'referenced_table'; definitions loaded from config where the target table entry was omitted.","commonSituations":"Migration generators emitting partial definitions; renaming the target table without updating FK definitions; copy-pasting an existing Reference and dropping the key by mistake.","solutions":["Add the key: 'referencedTable' => 'users' alongside 'columns' and 'referencedColumns'","Validate isset($definition['referencedTable'], $definition['columns'], $definition['referencedColumns']) before constructing","Fix the config/migration source that produced the incomplete definition"],"exampleFix":"// before\nnew Reference('fk_posts_user', [\n    'columns' => ['user_id'],\n    'referencedColumns' => ['id'],\n]);\n\n// after\nnew Reference('fk_posts_user', [\n    'columns' => ['user_id'],\n    'referencedTable' => 'users',\n    'referencedColumns' => ['id'],\n]);","handlingStrategy":"validation","validationCode":"if (!isset($definition['referencedTable'], $definition['columns'], $definition['referencedColumns'])) {\n    throw new InvalidArgumentException(\n        'Reference definition requires referencedTable, columns and referencedColumns'\n    );\n}\n$reference = new \\Phalcon\\Db\\Reference('fk_posts_user', $definition);","typeGuard":"function isCompleteReferenceDefinition(array $definition): bool\n{\n    return isset($definition['referencedTable'], $definition['columns'], $definition['referencedColumns']);\n}","tryCatchPattern":"try {\n    $reference = new \\Phalcon\\Db\\Reference('fk_posts_user', $definition);\n} catch (\\Phalcon\\Db\\Exceptions\\ReferencedTableRequired $e) {\n    throw new InvalidArgumentException('Foreign key definition is missing referencedTable', 0, $e);\n}","preventionTips":["Memorize the three required keys: referencedTable, columns, referencedColumns","Assert the full key set in migration builders with one isset() guard","Regenerate FK definitions after table renames instead of hand-editing"],"tags":["phalcon-db","foreign-key","reference","schema-definition","migrations"],"backgroundTag":"missing-definition-key","analyzedSha":"b7419de9cd0a8a3f48441ead84c9f8415d463e25","analyzedAt":"2026-08-21T06:21:18.811Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}