Table des matières
回复内容:
Maison développement back-end tutoriel php Laravel怎么在Model定义复合主键。

Laravel怎么在Model定义复合主键。

Jun 06, 2016 pm 08:25 PM
laravel php

表的结构如下:

<code>REATE TABLE `carts` (
  `user_id` int(10) unsigned NOT NULL,
  `product_id` char(64) NOT NULL,
  `quantity` int(10) unsigned NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`user_id`,`product_id`),
  KEY `fk_idx_cart_product` (`product_id`),
  CONSTRAINT `fk_idx_cart_product` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`),
  CONSTRAINT `fk_idx_cart_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8</code>
Copier après la connexion
Copier après la connexion

需要用Eloquent ORM的save()方法,他会根据primaryKey来保存数据,请问如何在Model设置这种复合主键?

<code>/**
 * The primary key for the model.
 *
 * @var string
 */
protected $primaryKey = 'id';</code>
Copier après la connexion
Copier après la connexion
<code>$cart = Cart::firstOrNew([...]);
$cart->quantity = $quantity;
$cart->save();
</code>
Copier après la connexion
Copier après la connexion

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'

回复内容:

表的结构如下:

<code>REATE TABLE `carts` (
  `user_id` int(10) unsigned NOT NULL,
  `product_id` char(64) NOT NULL,
  `quantity` int(10) unsigned NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`user_id`,`product_id`),
  KEY `fk_idx_cart_product` (`product_id`),
  CONSTRAINT `fk_idx_cart_product` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`),
  CONSTRAINT `fk_idx_cart_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8</code>
Copier après la connexion
Copier après la connexion

需要用Eloquent ORM的save()方法,他会根据primaryKey来保存数据,请问如何在Model设置这种复合主键?

<code>/**
 * The primary key for the model.
 *
 * @var string
 */
protected $primaryKey = 'id';</code>
Copier après la connexion
Copier après la connexion
<code>$cart = Cart::firstOrNew([...]);
$cart->quantity = $quantity;
$cart->save();
</code>
Copier après la connexion
Copier après la connexion

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'

这个问题没有解决,大部分别的框架也没有解决,所以暂时没有办法在Eloquent ORM 定义复合主键,解决办法:
1.使用doctrine。
2.在表单验证里面做验证,也能达到主键约束的效果。
关于这个问题其实在一年前就有国外的程序员在github上提了issue的,并且taylorotwell还参与了讨论,他给出的回复是laravel目前没有计划增加这个功能。直到今天(2015.11.07)都没有这个功能。详情请见以下链接:https://github.com/laravel/framework/issues/5355

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1662
14
Tutoriel PHP
1262
29
Tutoriel C#
1235
24
Exemple d'introduction de Laravel Exemple d'introduction de Laravel Apr 18, 2025 pm 12:45 PM

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Fonction de connexion de l'utilisateur de Laravel Fonction de connexion de l'utilisateur de Laravel Apr 18, 2025 pm 12:48 PM

Laravel fournit un cadre Auth complet pour implémenter les fonctions de connexion des utilisateurs, notamment: définir des modèles d'utilisateurs (modèle éloquent), créant des formulaires de connexion (moteur de modèle de lame), rédaction des contrôleurs de connexion (héritage de l'authentification \ loginContrôleur), vérifiant les demandes de connexion (Auth :: tentative) Redirection après la connexion de la connexion, la limitation de la sécurité). De plus, le cadre Auth fournit également des fonctions telles que la réinitialisation des mots de passe, l'enregistrement et la vérification des e-mails. Pour plus de détails, veuillez consulter la documentation de Laravel: https://laravel.com/doc

L'utilisation continue de PHP: raisons de son endurance L'utilisation continue de PHP: raisons de son endurance Apr 19, 2025 am 12:23 AM

Ce qui est encore populaire, c'est la facilité d'utilisation, la flexibilité et un écosystème fort. 1) La facilité d'utilisation et la syntaxe simple en font le premier choix pour les débutants. 2) étroitement intégré au développement Web, excellente interaction avec les demandes HTTP et la base de données. 3) L'énorme écosystème fournit une multitude d'outils et de bibliothèques. 4) La nature active et la nature open source les adaptent à de nouveaux besoins et tendances technologiques.

Méthode d'installation de Laravel Framework Méthode d'installation de Laravel Framework Apr 18, 2025 pm 12:54 PM

Résumé de l'article: Cet article fournit des instructions détaillées étape par étape pour guider les lecteurs sur la façon d'installer facilement le cadre Laravel. Laravel est un puissant cadre PHP qui accélère le processus de développement des applications Web. Ce didacticiel couvre le processus d'installation des exigences du système à la configuration des bases de données et à la configuration du routage. En suivant ces étapes, les lecteurs peuvent jeter rapidement et efficacement une base solide pour leur projet Laravel.

Comment apprendre Laravel comment apprendre Laravel gratuitement Comment apprendre Laravel comment apprendre Laravel gratuitement Apr 18, 2025 pm 12:51 PM

Vous voulez apprendre le cadre de Laravel, mais ne souffrez pas de ressources ni de pression économique? Cet article vous fournit un apprentissage gratuit de Laravel, vous apprenant à utiliser des ressources telles que les plateformes en ligne, les documents et les forums communautaires pour jeter une base solide pour votre parcours de développement PHP de la mise en place de maîtrise.

Comment afficher le numéro de version de Laravel? Comment afficher le numéro de version de Laravel Comment afficher le numéro de version de Laravel? Comment afficher le numéro de version de Laravel Apr 18, 2025 pm 01:00 PM

Le Framework Laravel a des méthodes intégrées pour afficher facilement son numéro de version pour répondre aux différents besoins des développeurs. Cet article explorera ces méthodes, y compris l'utilisation de l'outil de ligne de commande Composer, l'accès à des fichiers .env ou l'obtention d'informations de version via le code PHP. Ces méthodes sont essentielles pour maintenir et gérer le versioning d'applications Laravel.

Quelles versions de Laravel y a-t-il? Comment choisir la version de Laravel pour les débutants Quelles versions de Laravel y a-t-il? Comment choisir la version de Laravel pour les débutants Apr 18, 2025 pm 01:03 PM

Dans le Guide de sélection de la version Laravel Framework pour les débutants, cet article plonge dans les différences de version de Laravel, conçues pour aider les débutants à faire des choix éclairés parmi de nombreuses versions. Nous nous concentrerons sur les principales caractéristiques de chaque version, comparerons leurs avantages et leurs inconvénients, et fournirons des conseils utiles pour aider les débutants à choisir la version la plus appropriée de Laravel en fonction de leur niveau de compétence et de leurs exigences de projet. Pour les débutants, le choix d'une version appropriée de Laravel est crucial car il peut avoir un impact significatif sur leur courbe d'apprentissage et leur expérience de développement globale.

La différence entre Laravel et ThinkPhp La différence entre Laravel et ThinkPhp Apr 18, 2025 pm 01:09 PM

Laravel et ThinkPHP sont tous deux des cadres PHP populaires et ont leurs propres avantages et inconvénients dans le développement. Cet article comparera les deux en profondeur, mettant en évidence leur architecture, leurs fonctionnalités et leurs différences de performances pour aider les développeurs à faire des choix éclairés en fonction de leurs besoins spécifiques de projet.

See all articles