phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

È possibile correggere una chiave esterna in Yii senza averla configurata nel database?

Se non sbaglio, non è necessario fare in modo che mySql applichi le relazioni con chiave esterna affinché funzionino ancora in Yii. L'impostazione dei vincoli FK in mySql garantisce la corretta integrità del database, ma non credo che Yii lo utilizzi effettivamente in fase di esecuzione.

Quando inizialmente eseguo yiic (di Gii) per costruire il progetto, penso che guardi al DB per costruire le giuste relazioni nel modello, ma dopo non le usa.

Yii utilizza quindi questa conoscenza (da yiic) delle relazioni tra le tabelle per semplificarti la vita fornendo metodi di scelta rapida per accedere ai dati relazionali e per assicurarti di non violare i vincoli mySql e ottenere brutti errori SQL, ecc. Ma puoi comunque usare Logica di relazione Yii senza i vincoli SQL sottostanti. L'unico problema sarà che se Yii sbaglia e assegna un FK inesistente o qualcosa del genere, il tuo database non rileverà questo errore (l'integrità dei tuoi dati sarà più soggetta a errori).

Per collegare i tuoi prodotti ai reparti, assicurati di avere un campo department_id nel Prodotto (cosa che sembra che tu abbia). Quindi aggiungi una regola di relazione in questo modo a Prodotto:

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

E nel tuo modello di Dipartimento:

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

Ora dovresti essere in grado di utilizzare la relazione come al solito:

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

Buona fortuna e fammi sapere se sono fuori base e non funziona per te!