Laravel 4: faire une combinaison de valeurs des colonnes uniques
Je suis de l'importation d'un tas de csv entrées dans ma base de données avec Laravel 4.
Je ne peux pas vraiment le point à une colonne qui doit être unique, c'est une combinaison de 5 colonnes qui le rend unique. Cependant: comment définit-on cette dans Laravel?
Option 1: schéma du générateur de
Vous pouvez utiliser la table $->unique('email') de la méthode, mais qui ne semble permettre une colonne, et non un ensemble de colonnes.
Option 2: Validation
Moins préférable, mais j'ai pu valider le modèle avant de l'insérer. Cependant, encore une fois, à l'aide de " uniques:[table]' les règles de validation, il renvoie une erreur si l'un des valeurs de la colonne n'est pas unique, pas une combinaison d'entre eux.
Quelqu'un peut-il me dire comment je dois aller à ce sujet?
Je suis sûr que je suis absent quelque chose, mais je pourrait utiliser un coup de pouce dans la bonne direction 🙂
Merci,
Dieter
Vous devez vous connecter pour publier un commentaire.
Vous pouvez combiner:
Et à peu près tout dans Laravel acceptera de tableaux pour faire ce que vous devez avec "plus d'un".
Utiliser le Schéma du Constructeur
unique()
méthode pour définir votre modèle de données, comme Antonio mentionné.En outre, si vous souhaitez utiliser la validation de votre modèle, envisager de ma personnalisé
Validator
règle pour plusieursUNIQUE
index: https://github.com/felixkiss/uniquewith-validatorVous pouvez également le faire;
$table->unique(["column1", "column2"], 'uq_columns');
Ce qui signifie que vous aurez une colonne unique combinaison de toutes les colonnes, c'est à dire colonne1 et colonne2
unique as a combination
, le dernier paramètre est le nom de l'index.Vous pouvez essayer ce
Je sais que cette question est pour Laravel 4, mais je viens de tomber sur ce sur des recherches et trouvé une solution pour Laravel >= 5.3
Ici, il est:
Bien sûr, la migration peut ressembler à quelque chose comme
Puis de le valider, vous n'avez pas besoin d'utiliser des règles personnalisées, juste de règles avancé:
Bien sûr, vous pouvez valider le nom avant de ce. Le nom doit être nécessaire, de sorte que vous pouvez finir avec quelque chose comme ceci:
J'espère que cela aide.