Maison  >  Article  >  cadre php  >  A quoi sert join dans thinkphp5

A quoi sert join dans thinkphp5

WBOY
WBOYoriginal
2022-04-25 11:01:165336parcourir

Dans thinkphp5, join est utilisé pour interroger les données de deux ou plusieurs tables en fonction de la relation entre les colonnes de ces tables. C'est l'une des méthodes d'opération cohérentes. Le résultat renvoyé est un objet modèle et la syntaxe est "join (). Le nom de la table à associer et l'alias [condition d'association [type d'association]])".

A quoi sert join dans thinkphp5

L'environnement d'exploitation de cet article : système Windows 10, ThinkPHP version 5, ordinateur Dell G3.

À quoi sert join dans thinkphp5 ?

La méthode JOIN est également l'une des méthodes d'opération cohérentes, qui est utilisée pour interroger les données de deux ou plusieurs tables en fonction de la relation entre les colonnes de ces tables.

Explication

object join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] )

Paramètres

join : Le nom (complet) de la table et l'alias à associer, prend en charge trois méthodes d'écriture :

  • Méthode d'écriture 1 : ['Nom complet de la table ou sous-requête'=>'Alias' ]

  • Écriture 2 : 'Alias ​​du nom complet de la table'

  • Écriture 3 : 'Nom de la table sans préfixe de table de données'

condition : Condition d'association. Il peut s'agir d'une chaîne ou d'un tableau. Lorsqu'il s'agit d'un tableau, chaque élément est une condition associée.

type : type d'association. Peut être : INTÉRIEUR, GAUCHE, DROITE, COMPLET, insensible à la casse, la valeur par défaut est INTÉRIEUR.

Valeur de retour : l'objet modèle

join a généralement les types suivants. Différents types d'opérations de jointure affecteront les résultats des données renvoyées.

  • INNER JOIN : équivalent à JOIN (type JOIN par défaut), s'il y a au moins une correspondance dans le tableau, renvoie les lignes

  • LEFT JOIN : renvoie toutes les lignes du tableau de gauche même s'il n'y a aucune correspondance dans la table de droite

  • RIGHT JOIN : renvoie toutes les lignes de la table de droite même s'il n'y a pas de correspondance dans la table de gauche

  • FULL JOIN : renvoie les lignes tant qu'il y a une correspondance dans l'une des tables

L'exemple est le suivant :

Db::table('think_artist')
->alias('a')
->join('think_work w','a.id = w.artist_id')
->join('think_card c','a.card_id = c.id')
->select();
Db::table('think_artist')
->alias('a')
->join('__WORK__ w','a.id = w.artist_id')
->join('__CARD__ c','a.card_id = c.id')
->select();
$join = [
    ['think_work w','a.id=w.artist_id'],
    ['think_card c','a.card_id=c.id'],
];
Db::table('think_user')->alias('a')->join($join)->select();

Les trois méthodes d'écriture ci-dessus ont le même effet __WORK__ et __CARD__ seront converties en think_work et think_card lors de l'analyse finale. Remarque : Le nom de la table au milieu de « _table name_ » doit être en majuscule. Si vous ne souhaitez pas utiliser d'alias, le nom complet de la table doit être utilisé dans les conditions suivantes.

Db::table('think_user')->join('__WORK__','__ARTIST__.id = __WORK__.artist_id')->select();

La méthode INNER JOIN est utilisée par défaut. Si vous devez utiliser d'autres méthodes JOIN, vous pouvez la remplacer par

Db::table('think_user')->alias('a')->join('word w','a.id = w.artist_id','RIGHT')->select();

Le nom de la table peut également être une sous-requête

$subsql = Db::table('think_work')->where(['status'=>1])->field('artist_id,count(id) count')->group('artist_id')->buildSql();
Db::table('think_user')->alias('a')->join([$subsql=> 'w'], 'a.artist_id = w.artist_id')->select();

Puisque l'instruction renvoyée par buildSql contient (), il n'est pas nécessaire d'ajouter () aux deux extrémités.

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

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:
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