sql >> Databáze >  >> Database Tools >> phpMyAdmin

Je možné opravit cizí klíč v Yii, aniž byste jej nastavili v databázi?

Pokud se nepletu, nepotřebujete mít mySql, který pro ně vynucuje vztahy s cizím klíčem, aby stále fungoval v Yii. Nastavení omezení FK v mySql zajišťuje správnou integritu databáze, ale nemyslím si, že to Yii ve skutečnosti za běhu používá.

Při počátečním spuštění yiic (z Gii) k vytvoření projektu si myslím, že se dívá na DB, aby vytvořil správné vztahy v modelu, ale poté je nepoužívá.

Yii pak použije tyto znalosti (z yiic) o vztazích mezi tabulkami, aby vám usnadnil život tím, že poskytuje metody zkratek pro přístup k relačním datům a aby zajistil, že neporušíte omezení mySql a nedostanete ošklivé chyby SQL atd. Stále však můžete používat Logika vztahů Yii bez základních omezení SQL. Jediný problém bude v tom, že pokud se Yii pokazí a přiřadí neexistující FK nebo něco podobného, ​​vaše databáze tuto chybu nezachytí (integrita vašich dat bude náchylnější k chybám).

Chcete-li propojit své produkty s odděleními, ujistěte se, že máte v produktu pole department_id (což zní jako vy). Potom přidejte podobné pravidlo vztahu do Product:

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

A ve vašem modelu oddělení:

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

Nyní byste měli být schopni použít vztah jako normální:

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

Hodně štěstí a dejte mi vědět, pokud jsem hodně mimo základnu a nebude vám to fungovat!




  1. Změněné heslo v phpMyAdmin na Macu pomocí XAMPP, nyní nelze získat přístup k localhost/phpmyadmin

  2. Vytvoření tabulky JSON z dotazu SQL

  3. Docker MYSQL „[2006] MySQL server zmizel“

  4. Dotaz VELMI pomalý (>30s) v php, ale rychlý při spuštění dotazu v phpmyadmin