Maison développement back-end tutoriel php Explication détaillée des étapes pour configurer des sous-tableaux pour les relations entre les modèles Laravel

Explication détaillée des étapes pour configurer des sous-tableaux pour les relations entre les modèles Laravel

May 16, 2018 pm 03:10 PM
laravel 分表 设置

Cette fois, je vais vous donner une explication détaillée des étapes de mise en place de sous-tableaux pour les relations entre les modèles Laravel. Quelles sont les précautions pour la mise en place de sous-tableaux pour les relations entre les modèles Laravel. . Ce qui suit est un cas pratique, jetons un coup d'oeil.

Qu'est-ce qu'Eloquent

Eloquent est un ORM, le nom complet est Object Relational Mapping, traduit par "Object Relational Mapping" (si vous il suffit de s'y référer. Il serait trop sous-estimé de le traiter comme une couche d'abstraction de la bibliothèque de tableaux de couches). Ce qu'on appelle « l'objet » est ce que cet article appelle « Modèle » ; le mappage des relations d'objet est la relation entre les modèles. Document chinois : http://laravel-china.org/docs/eloquent#relationships

Quote est souvent utilisé dans le développement réel. Par exemple, si la table utilisateur est divisée en 100 tables, vous devez configurer des sous-tables pour interroger les données. Par exemple, la classe Model de Laravel fournit la méthode setTable :

Ensuite, ajoutez, supprimez, et modifiez la table de données. Vous devez d'abord créer une nouvelle instance de modèle, puis définir le nom de la table. Par exemple :
/**
 * Set the table associated with the model.
 *
 * @param string $table
 * @return $this
 */
public function setTable($table)
{
 $this->table = $table;
 return $this;
}
Copier après la connexion

C'est très simple. Alors lorsque la relation entre des modèles tels que HasOne, HasMany, etc. utilise cette méthode, comment configurer la sous-table ?
(new Circle())->setTable("t_group_" . hashID($userid, 20))
->newQuery()
->where('group_id', $request->group_id)
->update($attributes);
Copier après la connexion

Je n'ai pas trouvé de bonne solution après avoir longtemps cherché. En prenant HasOne comme exemple, j'ai regardé la méthode d'implémentation de la fonction HasOne de la classe Model Il n'y a pas de place pour mettre la table. nom, j'ai donc dû copier la méthode HasOne et la modifier. Par exemple, remplacez-le par myHasOne, ajoutez le paramètre $table pour définir le nom de la table et appelez setTable une fois l'objet instancié, et cela fonctionnera comme prévu.

Le code est le suivant :

Je me demande si vous avez une manière plus élégante.
public function detail()
{
 return $this->myHasOne(Circle::class, 'group_id', 'group_id', 't_group_' . hashID($this->userid, 20));
}
public function myHasOne($related, $foreignKey = null, $localKey = null, $table)
{
 $foreignKey = $foreignKey ?: $this->getForeignKey();
 
 $instance = (new $related)->setTable($table);
 
 $localKey = $localKey ?: $this->getKeyName();
 
 return new HasOne($instance->newQuery(), $this, $instance->getTable() . '.' . $foreignKey, $localKey);
}
Copier après la connexion

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes Redis du fonctionnement de PHP


Explication détaillée des cas d'utilisation du mode PHP singleton

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

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)

PHP vs Flutter : le meilleur choix pour le développement mobile PHP vs Flutter : le meilleur choix pour le développement mobile May 06, 2024 pm 10:45 PM

PHP vs Flutter : le meilleur choix pour le développement mobile

Laravel - Commandes artisanales Laravel - Commandes artisanales Aug 27, 2024 am 10:51 AM

Laravel - Commandes artisanales

Analyse des avantages et inconvénients des outils de tests unitaires PHP Analyse des avantages et inconvénients des outils de tests unitaires PHP May 06, 2024 pm 10:51 PM

Analyse des avantages et inconvénients des outils de tests unitaires PHP

Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ? Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ? May 07, 2024 am 08:39 AM

Comment utiliser le mappage objet-relationnel (ORM) en PHP pour simplifier les opérations de base de données ?

Architecture et pratique du système distribué PHP Architecture et pratique du système distribué PHP May 04, 2024 am 10:33 AM

Architecture et pratique du système distribué PHP

Comparaison des dernières versions de Laravel et CodeIgniter Comparaison des dernières versions de Laravel et CodeIgniter Jun 05, 2024 pm 05:29 PM

Comparaison des dernières versions de Laravel et CodeIgniter

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Jun 01, 2024 pm 01:34 PM

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ?

Tests unitaires de code PHP et tests d'intégration Tests unitaires de code PHP et tests d'intégration May 07, 2024 am 08:00 AM

Tests unitaires de code PHP et tests d'intégration

See all articles