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

Är det möjligt att fixa en främmande nyckel i Yii utan att ha ställt in den i databasen?

Om jag inte har fel så behöver du inte att låta mySql genomdriva relationer med främmande nyckel för att de fortfarande ska fungera i Yii. Att ställa in FK-begränsningar i mySql säkerställer korrekt databasintegritet, men jag tror inte att Yii faktiskt använder det vid körning.

När jag initialt körde yiic (av Gii) för att bygga projektet tror jag att det tittar på DB för att bygga rätt relationer i modellen, men den använder dem inte efter det.

Yii använder sedan denna kunskap (från yiic) om tabellrelationerna för att göra ditt liv enklare genom att tillhandahålla genvägsmetoder för att komma åt relationsdata, och för att säkerställa att du inte bryter mot mySql-begränsningar och får fula SQL-fel, etc. Men du kan fortfarande använda Yii-relationslogik utan de underliggande SQL-begränsningarna. Det enda problemet kommer att vara att om Yii förstör och tilldelar en icke-existerande FK eller något så kommer inte din databas att fånga detta fel (din dataintegritet kommer att vara mer felbenägen).

För att länka dina produkter till avdelningar, se bara till att du har ett department_id-fält i produkten (vilket det låter som du gör). Lägg sedan till en sådan relationsregel till Product:

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

Och i din avdelningsmodell:

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

Nu bör du kunna använda relationen som vanligt:

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

Lycka till, och låt mig veta om jag är långt utanför basen och det inte fungerar för dig!




  1. SQL Server 2008 R2-standard saknas Granskningsmapp i SSMS?

  2. MySQL-fel 2003 när du använder Navicat

  3. MySQL och PhpMyAdmin config.inc.php Lösenordsproblem på MAMP

  4. Åtkomst till webbplatsfiler och phpmyadmin i wamp från en annan dator på lan