Heim  >  Artikel  >  Backend-Entwicklung  >  Beredte ORM-Studiennotizen

Beredte ORM-Studiennotizen

WBOY
WBOYOriginal
2016-08-08 09:31:09888Durchsuche

 Ich lerne Laravel kürzlich und finde, dass die ORM-Funktion sehr leistungsfähig ist. Ich habe sie hier nur kurz untersucht. Wenn Sie bessere Notizen haben, teilen Sie sie bitte mit.

Da der Schwerpunkt auf Eloquent ORM liegt, werden die Routing-Einstellungen und der Controller nicht im Detail beschrieben. Hier gehen wir direkt zum Modul „Modelle“.

1. Datenbankvorbereitung (Mysql)

Hier müssen Sie zwei Tabellen erstellen, Benutzer und Benutzer_ext, und die Daten initialisieren:  

<span> 1</span> <span>CREATE</span> <span>TABLE</span>
<span> 2</span> <span>IF</span> <span>NOT</span> <span>EXISTS</span><span> users (
</span><span> 3</span>     iAutoId <span>INT</span> (<span>11</span>) <span>NOT</span> <span>NULL</span><span> AUTO_INCREMENT,
</span><span> 4</span>     sNmame <span>VARCHAR</span> (<span>20</span><span>),
</span><span> 5</span>     iStatus <span>TINYINT</span> (<span>4</span><span>),
</span><span> 6</span>     iCreateTime <span>INT</span> (<span>11</span><span>),
</span><span> 7</span>     <span>PRIMARY</span> <span>KEY</span><span> (iAutoId)
</span><span> 8</span> ) ENGINE <span>=</span> INNODB <span>DEFAULT</span> CHARSET <span>=</span> utf8 AUTO_INCREMENT <span>=</span> <span>1</span><span>;
</span><span> 9</span> 
<span>10</span> <span>INSERT</span> <span>INTO</span><span> users (sNmame, iStatus, iCreateTime)
</span><span>11</span> <span>VALUES</span>
<span>12</span>     (<span>'</span><span>test1</span><span>'</span>, <span>1</span>, <span>1400085387</span><span>),
</span><span>13</span>     (<span>'</span><span>test2</span><span>'</span>, <span>1</span>, <span>1400085387</span><span>),
</span><span>14</span>     (<span>'</span><span>test3</span><span>'</span>, <span>1</span>, <span>1400085387</span><span>),
</span><span>15</span>     (<span>'</span><span>test4</span><span>'</span>, <span>1</span>, <span>1400085387</span><span>),
</span><span>16</span>     (<span>'</span><span>test5</span><span>'</span>, <span>1</span>, <span>1400085387</span><span>),
</span><span>17</span>     (<span>'</span><span>test6</span><span>'</span>, <span>1</span>, <span>1400085387</span><span>);
</span><span>18</span> 
<span>19</span> <span>CREATE</span> <span>TABLE</span>
<span>20</span> <span>IF</span> <span>NOT</span> <span>EXISTS</span><span> users_ext (
</span><span>21</span>     iAutoId <span>INT</span> (<span>11</span>) <span>NOT</span> <span>NULL</span><span> AUTO_INCREMENT,
</span><span>22</span>     iAge <span>DECIMAL</span> (<span>3</span>, <span>0</span><span>),
</span><span>23</span>     sSex <span>TINYINT</span> (<span>4</span><span>),
</span><span>24</span>     iUserID <span>INT</span> (<span>11</span><span>),
</span><span>25</span>     <span>PRIMARY</span> <span>KEY</span><span> (iAutoId)
</span><span>26</span> ) ENGINE <span>=</span> INNODB <span>DEFAULT</span> CHARSET <span>=</span> utf8 AUTO_INCREMENT <span>=</span> <span>1</span><span>;
</span><span>27</span> 
<span>28</span> <span>INSERT</span> <span>INTO</span><span> users_ext (iAge, sSex, iUserID)
</span><span>29</span> <span>VALUES</span>
<span>30</span>     (<span>24</span>, <span>1</span>, <span>1</span><span>),
</span><span>31</span>     (<span>109</span>, <span>0</span>, <span>2</span><span>),
</span><span>32</span>     (<span>25</span>, <span>1</span>, <span>3</span><span>),
</span><span>33</span>     (<span>20</span>, <span>1</span>, <span>5</span><span>),
</span><span>34</span>     (<span>68</span>, <span>0</span>, <span>4</span><span>),
</span><span>35</span>     (<span>48</span>, <span>1</span>, <span>6</span>);

2. Datenbank konfigurieren

Datenbankkonfiguration in Datenbank.php hinzufügen:

 

<span> 1</span> <?<span>php
</span><span> 2</span> 
<span> 3</span> <span>return</span><span> [
</span><span> 4</span> 
<span> 5</span>     'fetch' => PDO::FETCH_CLASS,
<span> 6</span> 
<span> 7</span>     'default' => 'user',
<span> 8</span> 
<span> 9</span>     'connections' =><span> [
</span><span>10</span>         'user' =><span> [
</span><span>11</span>             'driver'    => 'mysql',
<span>12</span>             'host'      => 'localhost:3306',
<span>13</span>             'database'  => 'test',
<span>14</span>             'username'  => 'root',
<span>15</span>             'password'  => 'root',
<span>16</span>             'charset'   => 'utf8',
<span>17</span>             'collation' => 'utf8_unicode_ci',
<span>18</span>             'prefix'    => '',
<span>19</span>         ],
<span>20</span> <span>    ]
</span><span>21</span> ];

 3. Benutzermodell erstellen

Erstellen Sie UserModel.php unter appmodels

<span>1</span> <?<span>php
</span><span>2</span> 
<span>3</span> <span>class</span> UserModel <span>extends</span><span> \Eloquent {
</span><span>4</span>     <span>protected</span> <span>$table</span> = 'users'<span>;
</span><span>5</span>     <span>protected</span> <span>$primaryKey</span> = 'iAutoID'<span>;
</span><span>6</span>     <span>protected</span> <span>$connection</span> = 'user'<span>;
</span><span>7</span> }

 Ein solches Benutzermodell wurde erfolgreich erstellt und der Code ist sehr einfach. Was die Bedeutung der Mitgliedsvariablen betrifft, glaube ich, dass sie jeder verstehen kann. Sie stellen den Tabellennamen, den Primärschlüssel und die Datenbankverbindungskennung (in der Konfigurationsdatei) dar.

5. Verwenden Sie UserModel

Jetzt können Sie es überall verwenden. Es kann in Controllern und Routern verwendet werden. Hier ist ein einfaches Beispiel:

Jetzt gibt es eine Abfrageanweisung:

<span> 1</span> <span>SELECT</span>
<span> 2</span> <span>    users.sNmame,
</span><span> 3</span> <span>    users.iCreateTime,
</span><span> 4</span> <span>    users_ext.iAge,
</span><span> 5</span> <span>    users_ext.sSex
</span><span> 6</span> <span>FROM</span>
<span> 7</span> <span>    users
</span><span> 8</span> <span>LEFT</span> <span>JOIN</span> users_ext <span>ON</span> users.iAutoId <span>=</span><span> users_ext.iUserID
</span><span> 9</span> <span>WHERE</span>
<span>10</span>     users.iStatus <span>=</span> <span>1</span>
<span>11</span> <span>AND</span> users_ext.sSex <span>=</span> <span>0</span>
<span>12</span> <span>ORDER</span> <span>BY</span>
<span>13</span> <span>    users.iCreateTime
</span><span>14</span> LIMIT <span>0</span><span>,
</span><span>15</span>  <span>1</span>

  Hier ist eine einfache Abfrageanweisung, die in Form von ORM implementiert wird:

<span>1</span> <span>public</span> <span>function</span><span> getUsers(){
</span><span>2</span> 
<span>3</span>         <span>$select</span> = 'users.sNmame,users.iCreateTime,users_ext.iAge,users_ext.sSex'<span>;
</span><span>4</span>         <span>$resData</span> = UserModel::selectRaw(<span>$select</span>)->leftJoin('users_ext','users.iAutoId','=','users_ext.iUserID')->where('users.iStatus','=',1)->where('users_ext.sSex','=',0)->skip(0)->limit(1)-><span>get();
</span><span>5</span>         <span>var_dump</span>(<span>$resData</span>-><span>toArray());
</span><span>6</span>         <span>exit</span><span>();
</span><span>7</span> }

 Das Folgende sind die Abfrageergebnisse:

 

OK, das Obige ist nur ein einfaches Beispiel für eine Abfrage, es gibt noch viel zu studieren, wie zum Beispiel die Zuordnung zwischen Modulen usw.

 

 

 

Das Obige stellt die Eloquent ORM-Studiennotizen vor, einschließlich der relevanten Inhalte. Ich hoffe, dass sie für Freunde hilfreich sind, die sich für PHP-Tutorials interessieren.

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