Was die Korrelationsabfrage von ThinkPHP betrifft, wird sie im offiziellen Dokument so beschrieben:
Die obige Join-Funktion erfordert drei Parameter:
join
Die ( Der vollständige) zuzuordnende Tabellenname und Alias unterstützt drei Schreibmethoden:
写法1:[ '完整表名或者子查询'=>'别名' ] 写法2:'完整表名 别名' 写法3:'不带数据表前缀的表名'
condition
关联条件,可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
type
关联类型,可以为: INNER、LEFT、RIGHT、FULL,不区分大小写,默认为INNER。
verschiedene Präfixe
Im Allgemeinen werden sie in einer Datenbank abgefragt, und in diesem Fall wird der Standardwert verwendet. Sie haben alle die Dasselbe Tabellenpräfix wie (shop_), daher wird es bei Verwendung der mit dem Datenbankmodell verbundenen Abfrage häufig so geschrieben: Order::alias('o')
->join('user u', 'o.user_id = u.id')
->select();
Da im obigen Code eine Modellabfrage verwendet wird, wird diese standardmäßig zur Tabelle hinzugefügt Präfix, die vollständigen Tabellennamen der beiden Tabellen lauten
und shop_user, und der Assoziationstyp ist standardmäßig INNER-Assoziation. Aber wenn Sie eine Tabelle mit einem
anderen Präfix (zum Beispiel: pay_record) verknüpfen, funktioniert die obige Abfrageanweisung offensichtlich nicht. In diesem Fall müssen Sie geringfügige Änderungen an der Zuordnungsanweisung vornehmen folgt: Order::alias('o')
->join(['pay_record' => 'r'], 'o.pay_id = r.id')
->select();
Auf diese Weise können Sie das Modell verwenden, um Tabellen mit unterschiedlichen Präfixen für Abfragen zu verknüpfen.
Zusammenfassung