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]])".
L'environnement d'exploitation de cet article : système Windows 10, ThinkPHP version 5, ordinateur Dell G3.
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 PHPCe 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!