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

Mogelijk om een ​​externe sleutel in Yii te repareren zonder deze in de database te hebben ingesteld?

Als ik me niet vergis, heb je geen nodig om mySql buitenlandse sleutelrelaties te laten afdwingen zodat ze nog steeds in Yii kunnen werken. Het instellen van FK-beperkingen in mySql zorgt voor een goede database-integriteit, maar ik denk niet dat Yii dat tijdens runtime gebruikt.

Bij het aanvankelijk draaien van yiic (van Gii) om het project te bouwen, denk ik dat het naar de DB kijkt om de juiste relaties in het model op te bouwen, maar het gebruikt ze daarna niet meer.

Yii gebruikt vervolgens deze kennis (van yiic) van de tabelrelaties om uw leven gemakkelijker te maken door snelkoppelingsmethoden te bieden om toegang te krijgen tot relationele gegevens, en om ervoor te zorgen dat u mySql-beperkingen niet schendt en lelijke SQL-fouten krijgt, enz. Maar u kunt nog steeds gebruik maken van Yii-relatielogica zonder de onderliggende SQL-beperkingen. Het enige probleem zal zijn dat als Yii het verprutst en een niet-bestaande FK of iets dergelijks toewijst, je database deze fout niet zal opvangen (je gegevensintegriteit zal meer foutgevoelig zijn).

Om uw producten aan afdelingen te koppelen, moet u ervoor zorgen dat u een afdelings_id-veld in het Product heeft (het klinkt alsof u dat doet). Voeg vervolgens een relatieregel zoals deze toe aan Product:

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

En in uw Afdelingsmodel:

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

Nu zou je de relatie normaal moeten kunnen gebruiken:

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

Veel succes en laat het me weten als ik er ver naast zit en het niet voor jou werkt!




  1. SQL Server Management Studio - vind opgeslagen procedure op naam over meerdere databases

  2. Inhoud van Blob bekijken in phpMyAdmin

  3. UTF8-probleem met MySQL 5

  4. Databases en tabellen importeren met phpMyAdmin