sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

¿Es posible arreglar una clave externa en Yii sin haberla configurado en la base de datos?

Si no me equivoco, no necesitas tener mySql imponiendo relaciones de clave externa para que sigan funcionando en Yii. La configuración de restricciones FK en mySql garantiza la integridad adecuada de la base de datos, pero no creo que Yii realmente use eso en tiempo de ejecución.

Cuando se ejecuta inicialmente yiic (de Gii) para construir el proyecto, creo que mira la base de datos para construir las relaciones correctas en el Modelo, pero no las usa después de eso.

Luego, Yii usa este conocimiento (de yiic) de las relaciones de la tabla para facilitarle la vida al proporcionar métodos abreviados para acceder a los datos relacionales y para garantizar que no viole las restricciones de mySql y obtenga errores de SQL feos, etc. Pero aún puede usar Lógica de relación Yii sin las restricciones SQL subyacentes. El único problema será que si Yii se equivoca y asigna un FK inexistente o algo así, su base de datos no detectará este error (la integridad de sus datos será más propensa a errores).

Para vincular sus productos a los departamentos, solo asegúrese de tener un campo de ID_departamento en el Producto (que parece que tiene). Luego agregue una regla de relación como esta a Producto:

'department' => array(self::BELONGS_TO, 'Department', 'department_id'),

Y en su modelo de Departamento:

'products' => array(self::HAS_MANY, 'Product', 'department_id'),

Ahora debería poder usar la relación como de costumbre:

$myProductModel->department; // returns the model of the Department referenced
$myDepartmentModel->products; // returns the models of all Products in the department

¡Buena suerte y avísame si estoy muy equivocado y no funciona para ti!