ThinkPHP關(guān)聯(lián)模型操作實(shí)例分析
Jun 13, 2016 am 11:58 AM
通常我們所說的關(guān)聯(lián)關(guān)系包括下面三種:
◇ 一對(duì)一關(guān)聯(lián) : ONE_TO_ONE , 包括 HAS_ONE 和 BELONGS_TO
◇ 一對(duì)多關(guān)聯(lián) : ONE_TO_MANY , 包括 HAS_MANY 和 BELONGS_TO
◇ 多對(duì)多關(guān)聯(lián) : MANY_TO_MANY
關(guān)聯(lián)定義
數(shù)據(jù)表的關(guān)聯(lián) CURD 操作,目前支持的關(guān)聯(lián)關(guān)系包括下面四種:HAS_ONE 、 BELONGS_TO 、 HAS_MANY 、 MANY_TO_MANY 。
一個(gè)模型根據(jù)業(yè)務(wù)模型的復(fù)雜程度可以同時(shí)定義多個(gè)關(guān)聯(lián),不受限制,所有的關(guān)聯(lián)定義都統(tǒng)一在模型類的 $_link 成員變量里面定義,并且可以支持動(dòng)態(tài)定義。要支持關(guān)聯(lián)操作,模型類必須繼承 RelationModel 類,關(guān)聯(lián)定義的格式是:
復(fù)制代碼 代碼如下:
protected $_link = array(
' 關(guān)聯(lián) 1' => array(
' 關(guān)聯(lián)屬性 1' => ' 定義 ',
' 關(guān)聯(lián)屬性 N' => ' 定義 ',
),
' 關(guān)聯(lián) 2' => array(
' 關(guān)聯(lián)屬性 1' => ' 定義 ',
' 關(guān)聯(lián)屬性 N' => ' 定義 ',
),
...
);
HAS_ONE 關(guān)聯(lián)方式的定義:
復(fù)制代碼 代碼如下:
class UserModel extends RelationModel
{
public $_link = array(
'Profile'=> array(
'mapping_type' =>HAS_ONE,
'class_name'=>'Profile',
// 定義更多的關(guān)聯(lián)屬性
……
) ,
);
}
mapping_type 關(guān)聯(lián)類型,這個(gè)在 HAS_ONE 關(guān)聯(lián)里面必須使用 HAS_ONE 常量定義。
class_name 要關(guān)聯(lián)的模型類名
mapping_name 關(guān)聯(lián)的映射名稱,用于獲取數(shù)據(jù)用
foreign_key 關(guān)聯(lián)的外鍵名稱
condition 關(guān)聯(lián)條件
mapping_fields 關(guān)聯(lián)要查詢的字段
as_fields 直接把關(guān)聯(lián)的字段值映射成數(shù)據(jù)對(duì)象中的某個(gè)字段
BELONGS_TO 關(guān)聯(lián)方式的定義:
復(fù)制代碼 代碼如下:
'Dept'=> array(
'mapping_type'=>BELONGS_TO,
'class_name'=>'Dept',
'foreign_key'=>'userId',
'mapping_name'=>'dept',
// 定義更多的關(guān)聯(lián)屬性
……
) ,
class_name 要關(guān)聯(lián)的模型類名
mapping_name 關(guān)聯(lián)的映射名稱,用于獲取數(shù)據(jù)用
foreign_key 關(guān)聯(lián)的外鍵名稱
mapping_fields 關(guān)聯(lián)要查詢的字段
condition 關(guān)聯(lián)條件
parent_key 自引用關(guān)聯(lián)的關(guān)聯(lián)字段
as_fields 直接把關(guān)聯(lián)的字段值映射成數(shù)據(jù)對(duì)象中的某個(gè)字段
HAS_MANY 關(guān)聯(lián)方式的定義:
復(fù)制代碼 代碼如下:
'Article'=> array(
'mapping_type' =>HAS_MANY,
'class_name'=>'Article',
'foreign_key'=>'userId',
'mapping_name'=>'articles',
'mapping_order'=>'create_time desc',
// 定義更多的關(guān)聯(lián)屬性
……
) ,
class_name 要關(guān)聯(lián)的模型類名
mapping_name 關(guān)聯(lián)的映射名稱,用于獲取數(shù)據(jù)用
foreign_key 關(guān)聯(lián)的外鍵名稱
parent_key 自引用關(guān)聯(lián)的關(guān)聯(lián)字段
condition 關(guān)聯(lián)條件
mapping_fields 關(guān)聯(lián)要查詢的字段
mapping_limit 關(guān)聯(lián)要返回的記錄數(shù)目
mapping_order 關(guān)聯(lián)查詢的排序
MANY_TO_MANY 關(guān)聯(lián)方式的定義:
復(fù)制代碼 代碼如下:
"Group"=>array(
'mapping_type'=>MANY_TO_MANY,
'class_name'=>'Group',
'mapping_name'=>'groups',
'foreign_key'=>'userId',
'relation_foreign_key'=>'goupId',
'relation_table'=>'think_gourpUser'
)
class_name 要關(guān)聯(lián)的模型類名
mapping_name 關(guān)聯(lián)的映射名稱,用于獲取數(shù)據(jù)用
foreign_key 關(guān)聯(lián)的外鍵名稱
relation_foreign_key 關(guān)聯(lián)表的外鍵名稱
mapping_limit 關(guān)聯(lián)要返回的記錄數(shù)目
mapping_order 關(guān)聯(lián)查詢的排序
relation_table 多對(duì)多的中間關(guān)聯(lián)表名稱
關(guān)聯(lián)查詢
使用 relation 方法進(jìn)行關(guān)聯(lián)操作, relation 方法不但可以啟用關(guān)聯(lián)還可以控制局部關(guān)聯(lián)操作,實(shí)現(xiàn)了關(guān)聯(lián)操作一切盡在掌握之中。
$User = D( "User" );
$user = $User->realtion(true)->find(1);
輸出 $user 結(jié)果可能是類似于下面的數(shù)據(jù):
復(fù)制代碼 代碼如下:
array(
'id'=>1,
'account'=>'ThinkPHP',
'password'=>'123456',
'Profile'=> array(
'email'=>'liu21st@gmail.com',
'nickname'=>'流年',
) ,
)
關(guān)聯(lián)寫入
復(fù)制代碼 代碼如下:
$User = D( "User" );
$data = array();
$data["account"]="ThinkPHP";
$data["password"]="123456";
$data["Profile"]=array(
'email'=>'liu21st@gmail.com',
'nickname' =>' 流年 ',
) ;
$result = $User->relation(true)->add($user);
這樣就會(huì)自動(dòng)寫入關(guān)聯(lián)的 Profile 數(shù)據(jù)。
關(guān)聯(lián)更新
復(fù)制代碼 代碼如下:
$User = D( "User" );
$data["account"]= "ThinkPHP";
$data["password"]= "123456";
$data["Profile"]=array(
'email'=>'liu21st@gmail.com',
'nickname' =>' 流年 ',
) ;
$result =$User-> relation(true)->where(‘id=3')->save($data);
關(guān)聯(lián)刪除
$result =$User->relation(true)->delete( "3" );

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Boston Dynamics Atlas tritt offiziell in die ?ra der Elektroroboter ein! Gestern hat sich der hydraulische Atlas einfach ?unter Tr?nen“ von der Bühne der Geschichte zurückgezogen. Heute gab Boston Dynamics bekannt, dass der elektrische Atlas im Einsatz ist. Es scheint, dass Boston Dynamics im Bereich kommerzieller humanoider Roboter entschlossen ist, mit Tesla zu konkurrieren. Nach der Ver?ffentlichung des neuen Videos wurde es innerhalb von nur zehn Stunden bereits von mehr als einer Million Menschen angesehen. Die alten Leute gehen und neue Rollen entstehen. Das ist eine historische Notwendigkeit. Es besteht kein Zweifel, dass dieses Jahr das explosive Jahr der humanoiden Roboter ist. Netizens kommentierten: Die Weiterentwicklung der Roboter hat dazu geführt, dass die diesj?hrige Er?ffnungsfeier wie Menschen aussieht, und der Freiheitsgrad ist weitaus gr??er als der von Menschen. Aber ist das wirklich kein Horrorfilm? Zu Beginn des Videos liegt Atlas ruhig auf dem Boden, scheinbar auf dem Rücken. Was folgt, ist atemberaubend

Stellen Sie sich ein Modell der künstlichen Intelligenz vor, das nicht nur die F?higkeit besitzt, die traditionelle Datenverarbeitung zu übertreffen, sondern auch eine effizientere Leistung zu geringeren Kosten erzielt. Dies ist keine Science-Fiction, DeepSeek-V2[1], das weltweit leistungsst?rkste Open-Source-MoE-Modell, ist da. DeepSeek-V2 ist ein leistungsstarkes MoE-Sprachmodell (Mix of Experts) mit den Merkmalen eines wirtschaftlichen Trainings und einer effizienten Inferenz. Es besteht aus 236B Parametern, von denen 21B zur Aktivierung jedes Markers verwendet werden. Im Vergleich zu DeepSeek67B bietet DeepSeek-V2 eine st?rkere Leistung, spart gleichzeitig 42,5 % der Trainingskosten, reduziert den KV-Cache um 93,3 % und erh?ht den maximalen Generierungsdurchsatz auf das 5,76-fache. DeepSeek ist ein Unternehmen, das sich mit allgemeiner künstlicher Intelligenz besch?ftigt

Das neueste Video von Teslas Roboter Optimus ist ver?ffentlicht und er kann bereits in der Fabrik arbeiten. Bei normaler Geschwindigkeit sortiert es Batterien (Teslas 4680-Batterien) so: Der Beamte hat auch ver?ffentlicht, wie es bei 20-facher Geschwindigkeit aussieht – auf einer kleinen ?Workstation“, pflücken und pflücken und pflücken: Dieses Mal wird es freigegeben. Eines der Highlights Der Vorteil des Videos besteht darin, dass Optimus diese Arbeit in der Fabrik v?llig autonom und ohne menschliches Eingreifen w?hrend des gesamten Prozesses erledigt. Und aus Sicht von Optimus kann es auch die krumme Batterie aufnehmen und platzieren, wobei der Schwerpunkt auf der automatischen Fehlerkorrektur liegt: In Bezug auf die Hand von Optimus gab der NVIDIA-Wissenschaftler Jim Fan eine hohe Bewertung ab: Die Hand von Optimus ist der fünffingrige Roboter der Welt am geschicktesten. Seine H?nde sind nicht nur taktil

Anfang dieses Monats schlugen Forscher des MIT und anderer Institutionen eine vielversprechende Alternative zu MLP vor – KAN. KAN übertrifft MLP in Bezug auf Genauigkeit und Interpretierbarkeit. Und es kann MLP, das mit einer gr??eren Anzahl von Parametern ausgeführt wird, mit einer sehr kleinen Anzahl von Parametern übertreffen. Beispielsweise gaben die Autoren an, dass sie KAN nutzten, um die Ergebnisse von DeepMind mit einem kleineren Netzwerk und einem h?heren Automatisierungsgrad zu reproduzieren. Konkret verfügt DeepMinds MLP über etwa 300.000 Parameter, w?hrend KAN nur etwa 200 Parameter hat. KAN hat eine starke mathematische Grundlage wie MLP und basiert auf dem universellen Approximationssatz, w?hrend KAN auf dem Kolmogorov-Arnold-Darstellungssatz basiert. Wie in der folgenden Abbildung gezeigt, hat KAN

Ollama ist ein superpraktisches Tool, mit dem Sie Open-Source-Modelle wie Llama2, Mistral und Gemma problemlos lokal ausführen k?nnen. In diesem Artikel werde ich vorstellen, wie man Ollama zum Vektorisieren von Text verwendet. Wenn Sie Ollama nicht lokal installiert haben, k?nnen Sie diesen Artikel lesen. In diesem Artikel verwenden wir das Modell nomic-embed-text[2]. Es handelt sich um einen Text-Encoder, der OpenAI text-embedding-ada-002 und text-embedding-3-small bei kurzen und langen Kontextaufgaben übertrifft. Starten Sie den nomic-embed-text-Dienst, wenn Sie o erfolgreich installiert haben

Die Zielerkennung ist ein relativ ausgereiftes Problem in autonomen Fahrsystemen, wobei die Fu?g?ngererkennung einer der ersten Algorithmen ist, die eingesetzt werden. In den meisten Arbeiten wurde eine sehr umfassende Recherche durchgeführt. Die Entfernungswahrnehmung mithilfe von Fischaugenkameras für die Rundumsicht ist jedoch relativ wenig untersucht. Aufgrund der gro?en radialen Verzerrung ist es schwierig, die standardm??ige Bounding-Box-Darstellung in Fischaugenkameras zu implementieren. Um die obige Beschreibung zu vereinfachen, untersuchen wir erweiterte Begrenzungsrahmen-, Ellipsen- und allgemeine Polygondesigns in Polar-/Winkeldarstellungen und definieren eine mIOU-Metrik für die Instanzsegmentierung, um diese Darstellungen zu analysieren. Das vorgeschlagene Modell ?fisheyeDetNet“ mit polygonaler Form übertrifft andere Modelle und erreicht gleichzeitig 49,5 % mAP auf dem Valeo-Fisheye-Kameradatensatz für autonomes Fahren

Projektlink vorne geschrieben: https://nianticlabs.github.io/mickey/ Anhand zweier Bilder kann die Kameraposition zwischen ihnen gesch?tzt werden, indem die Korrespondenz zwischen den Bildern hergestellt wird. Normalerweise handelt es sich bei diesen Entsprechungen um 2D-zu-2D-Entsprechungen, und unsere gesch?tzten Posen sind ma?stabsunabh?ngig. Einige Anwendungen, wie z. B. Instant Augmented Reality jederzeit und überall, erfordern eine Posensch?tzung von Skalenmetriken und sind daher auf externe Tiefensch?tzer angewiesen, um die Skalierung wiederherzustellen. In diesem Artikel wird MicKey vorgeschlagen, ein Keypoint-Matching-Prozess, mit dem metrische Korrespondenzen im 3D-Kameraraum vorhergesagt werden k?nnen. Durch das Erlernen des 3D-Koordinatenabgleichs zwischen Bildern k?nnen wir auf metrische Relativwerte schlie?en

FP8 und die geringere Gleitkomma-Quantifizierungsgenauigkeit sind nicht l?nger das ?Patent“ von H100! Lao Huang wollte, dass jeder INT8/INT4 nutzt, und das Microsoft DeepSpeed-Team begann, FP6 auf A100 ohne offizielle Unterstützung von NVIDIA auszuführen. Testergebnisse zeigen, dass die FP6-Quantisierung der neuen Methode TC-FPx auf A100 nahe an INT4 liegt oder gelegentlich schneller als diese ist und eine h?here Genauigkeit aufweist als letztere. Darüber hinaus gibt es eine durchg?ngige Unterstützung gro?er Modelle, die als Open-Source-L?sung bereitgestellt und in Deep-Learning-Inferenz-Frameworks wie DeepSpeed ??integriert wurde. Dieses Ergebnis wirkt sich auch unmittelbar auf die Beschleunigung gro?er Modelle aus – in diesem Rahmen ist der Durchsatz bei Verwendung einer einzelnen Karte zum Ausführen von Llama 2,65-mal h?her als der von Doppelkarten. eins
