Comment créer la clé primaire composite en utilisant la Migration dans Yii2?
J'ai essayé d'exécuter yii migrate
, mais il a montré l'erreur suivante:
create table news-cate ...Exception: SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key
The SQL being executed was: CREATE TABLE `news-cate` (
`news-id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`cate-id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
Voici mon code:
class m150821_083020_create_newscate_table extends Migration
{
public function safeUp()
{
$this->createTable('news-cate', [
'news-id' => $this->primaryKey(),
'cate-id' => $this->primaryKey(),
]);
$this->addForeignKey("fk_news_cate_nid", "news-cate", "news-id", "news", "id", "RESTRICT", "CASCADE");
$this->addForeignKey("fk_news_cate_cid", "news-cate", "cate-id", "category", "id", "RESTRICT", "CASCADE");
}
public function safeDown()
{
echo "m150821_083020_create_newscate_table cannot be reverted.\n";
$this->dropTable("news-cate");
return false;
}
}
Alors, comment créer de la clé primaire composite en utilisant la Migration dans Yii2?
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR
Que de yii version 2.06 vous pouvez utiliser le nouveau générateur de schéma:
RÉPONSE ORIGINALE À CETTE QUESTION
Ne pas ajouter des clés primaires dans la création de la table, seulement déclarer types:
Après que vous pouvez ajouter la clé primaire composite comme ceci:
Pour plusieurs colonnes, la matrice est autorisé dans addPrimaryKey() méthode.
C'est mieux que d'écrire du sql brut.
essayer de cette façon,
Idéalement, vous êtes en train de créer la jonction de deux tables. Vous pouvez utiliser Yii ligne de commande pour créer la migration par juste une ligne de code :
Il génère :
Et structure de la Table serait comme ça :
Veuillez consulter ci-dessous mentionné, URL de référence:
http://www.yiiframework.com/doc-2.0/guide-db-migrations.html