Heim php教程 php手册 ThinkPHP模型详解

ThinkPHP模型详解

Jun 06, 2016 pm 07:51 PM
thinkphp 模型

这篇文章主要介绍了ThinkPHP模型详解的相关资料,需要的朋友可以参考下

模型定义,默认情况下,ThinkPHP的模型类是位于/Home/Model/目录之下,模型类通常需要继承系统的\Think\Model类或其子类,下面是一个Home\Model\UserModel类的定义:

文件命名遵守UserModel.class.php的方式,跟控制器的命名一样

模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表,但你可以根据自己的需求来定制自己的数据表设置和操作。

首先我们需要在配置文件设置我们的数据库连接信息:

'DB_TYPE' => 'mysql', 'DB_HOST' => 'localhost', 'DB_NAME' => 'database', 'DB_USER' => 'username', 'DB_PWD' => 'password', 'DB_PORT' => '3306',

这些配置信息还是在/Home/Conf/config.php文件里设置。

指定数据表前缀

指定标前缀,我们在第一课的配置项已经指定,以下的文字表示你可以灵活配置你的数据表。

protected $tablePrefix = 'top_';

如果数据库的表没有表前缀,使用空字符串代替

protected $tablePrefix = '';

指定数据表,此处的指定的数据表的不需要添加表前缀:

protected $tableName = 'user';

举个例子说,比如说你的数据库中有一个没有表前缀的,名为users的数据表,可以用以下的两种方法在模型中进行下面的定义:

第一,直接根据系统的规范来命名模型类来命名模型,比如说就命名为UsersModel那么只需要在这个类里面加上下面的设置就可以了:

protected $tablePrefix = '';

ThinkPHP系统就会自动定位到users表了。

第二种情况时,如果你的模型类没有按照系统规范来命名,比如说不小心命名为UserModel,这种情况下可以同时指定表前缀和表明,比如:

protected $tablePrefix = ''; protected $tableName = 'users';

或者你直接指定trueTableName:

protected $trueTableName = 'users';

既然模型通常是用来操作数据表,那么我们来看看模型的基本CURD:

注:为了方便演示,我们在UserController中定义一个testDemo()方法用于演示

public function testDemo() { }

以下的代码将会一段一段在这个方法里演示,你可以通过访问:8999/index.php/Home/User/testDemo来看到实际效果。

添加纪录

$user = M('User'); $data['username'] = 'ThinkPHP'; $data['email'] = 'ThinkPHP@gmail.com'; $user->create($data); $record = $user->add(); dump($record);

add()返回的是插入数据的id,对于不存在的表字段,add()方法会自动过滤。

读取纪录

在ThinkPHP中读取数据的方式很多,通常分为读取数据、读取数据集和读取字段值

$user = M('User'); $record = $user->where('username="ThinkPHP"')->find(); dump($record);

读取字段值

$user = M('User'); $record = $user->where('id=3')->getField('username'); dump($record);

默认情况下,当只有一个字段的时候,返回满足条件的数据表中的该字段的第一行的值.如果getField()传入多个字段,返回值将是一个关联数组:

$user = M('User'); $record = $user->getField('username,email'); dump($record);

这个数组总是以传入的第一个第一个字段为键值的。如果修改为:

$user = M('User'); $record = $user->getField('email,username'); dump($record);

将上面的两次代码分别放到testDemo(),你就会看到不一样的结果集。

用save()方法更新数据

$user = M('User'); $data['username'] = 'ThinkPHPSave'; $data['email'] = 'ThinkPHPSave@outlook.com'; $record = $user->where('id=3')->save($data); dump($record);

这里的$record返回的事1,表示成功更改。

当然,你也可以这样:

$user = M('User'); $user->username = 'ThinkPHP'; $user->email = 'ThinkPHP@outlook.com'; $record = $user->where('id=3')->save(); dump($record);

日常开发的时候经常会遇到一些只更新某些字段的情况,可以通过下面的方式来实现:

$user = M("User"); $record = $user->where('id=4')->setField('username','ThinkPHPChangeName'); dump($record);

同时更新多个字段,可以将数据以数组的形式传给setField()方法:

$user = M('User'); $data = array('username'=>'ThinkPHPChangeArray','email'=>'ThinkPHP@array.com'); $record = $user-> where('id=6')->setField($data); dump($record);

ThinkPHP删除数据使用delete方法,例如:

$user = M('User'); $record = $user->where('id=3')->delete(); dump($record);

或者你可以直接使用:

$record = $user->delete('1,2,5'); dump($record);

这样就达到了删除主键1,2,5这三条纪录了。

ActiveRecords

ThinkPHP实现了ActiveRecords模式的ORM模型,采用了非标准的ORM模型:表映射到类,记录映射到对象。以下实例将使用ActiveRecords重现对数据表的CURD,看看ActiveRecords给我们带来了什么好处。

$user = M("User"); $user->username = 'ThinkPHPWithActive'; $user->email = 'ThinkPHPActive@gmail.com'; $record = $user->add(); dump($record);

读取纪录

AR最大的特点可能就是它的查询模式了,模式简单易用,因为更多情况下面查询条件都是以主键或者某个关键的字段。这种类型的查询,ThinkPHP有着很好的支持。

比如说获取主键为2的用户信息:

$user = M("User"); $record = $user->find(2); dump($record);

直接不用where()查询了,简单友好吧。再比如:

$user = M("User"); $record = $user->getByUsername("jelly"); dump($record);

如果是查询多条纪录,使用以下方式:

$user = M("User"); $record = $user->select('1,3,8'); dump($record);

更新记录

$user = M("User"); $user->find(21); $user->username = 'TOPThinkChangeWithAR'; $record = $user->save(); dump($record);

删除记录

删除单条纪录

$user = M("User"); $record = $user->delete(8); dump($record);

删除多条纪录

$user = M("User"); $record = $user->delete('15,16'); dump($record); // todo: 这里的自动验证和关联模型 调试不出来。

自动完成

自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,当使用create()方法创建数据对象的时候会触发自动完成数机制。

因此,在ThinkPHP鼓励使用create()方法来创建数据对象,因为这是一种更加安全的方式,直接通过add()或者save()方法实现数据写入无法出发自动完成机制。

自动完成通常用来完成默认字段写入(比如添加时间戳),安全字段过滤(比如加密密码)以及业务逻辑的自动处理等。可以通过模型类里面通过$_auto属性定义处理规则。下面演示如何自动完成添加时间戳:

在UserModel中,声明自动完成的定义数组$_auto :

protected $_auto = array ( array('created_at','date("Y-m-d H:i:s", time())',3,'function'), array('updated_at','date("Y-m-d H:i:s", time())',3,'function'), );

还有一种是理由auto()方法动态设置自动完成的机制,可以到官方文档去看看

设置完成之后,我们在testDemo()方法中创建一条用户数据:

$user = D('User'); $data['username'] = "ThinkPHP"; $data['email'] = "ThinkPHP@gmail.com"; $user->create($data); $record = $user->add(); dump($record);

测试,如果返回纪录的id值,说明用户纪录创建成功。要验证数据是否自动完成,你可以直接使用:

$user = D('User'); $record = $user->find(id); dump($record);

自动验证

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create()创建数据对象的时候自动进行数据验证。

数据验证可以进行数据类型、业务规则、安全判断等方面的验证操作。

通常用于表单验证

数据验证有两种方式:

静态方式:在模型类里面通过$_validate属性定义验证规则。

动态方式:使用模型类的validate()方法动态创建自动验证规则。

无论是什么方式,验证规则的定义是统一的规则,定义格式为:

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Das weltweit leistungsstärkste Open-Source-MoE-Modell ist da, mit chinesischen Fähigkeiten, die mit GPT-4 vergleichbar sind, und der Preis beträgt nur fast ein Prozent von GPT-4-Turbo Das weltweit leistungsstärkste Open-Source-MoE-Modell ist da, mit chinesischen Fähigkeiten, die mit GPT-4 vergleichbar sind, und der Preis beträgt nur fast ein Prozent von GPT-4-Turbo May 07, 2024 pm 04:13 PM

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

KAN, das MLP ersetzt, wurde durch Open-Source-Projekte auf Faltung erweitert KAN, das MLP ersetzt, wurde durch Open-Source-Projekte auf Faltung erweitert Jun 01, 2024 pm 10:03 PM

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

Hallo, elektrischer Atlas! Der Boston Dynamics-Roboter erwacht wieder zum Leben, seltsame 180-Grad-Bewegungen machen Musk Angst Hallo, elektrischer Atlas! Der Boston Dynamics-Roboter erwacht wieder zum Leben, seltsame 180-Grad-Bewegungen machen Musk Angst Apr 18, 2024 pm 07:58 PM

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

Es gibt mehrere Versionen von thinkphp Es gibt mehrere Versionen von thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP verfügt über mehrere Versionen, die für verschiedene PHP-Versionen entwickelt wurden. Zu den Hauptversionen gehören 3.2, 5.0, 5.1 und 6.0, während Nebenversionen dazu dienen, Fehler zu beheben und neue Funktionen bereitzustellen. Die neueste stabile Version ist ThinkPHP 6.0.16. Berücksichtigen Sie bei der Auswahl einer Version die PHP-Version, die Funktionsanforderungen und den Community-Support. Für optimale Leistung und Support wird empfohlen, die neueste stabile Version zu verwenden.

Tesla-Roboter arbeiten in Fabriken, Musk: Der Freiheitsgrad der Hände wird dieses Jahr 22 erreichen! Tesla-Roboter arbeiten in Fabriken, Musk: Der Freiheitsgrad der Hände wird dieses Jahr 22 erreichen! May 06, 2024 pm 04:13 PM

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

So führen Sie thinkphp aus So führen Sie thinkphp aus Apr 09, 2024 pm 05:39 PM

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

FisheyeDetNet: der erste Zielerkennungsalgorithmus basierend auf einer Fischaugenkamera FisheyeDetNet: der erste Zielerkennungsalgorithmus basierend auf einer Fischaugenkamera Apr 26, 2024 am 11:37 AM

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

Mit einer einzelnen Karte läuft Llama 70B schneller als mit zwei Karten, Microsoft hat gerade FP6 in A100 integriert | Mit einer einzelnen Karte läuft Llama 70B schneller als mit zwei Karten, Microsoft hat gerade FP6 in A100 integriert | Apr 29, 2024 pm 04:55 PM

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

See all articles