최근에 Laravel을 배우고 있는데 ORM 기능이 매우 강력하다고 생각합니다. 여기서는 간략하게 살펴보았는데 더 좋은 노트가 있으면 공유해 주세요.
Eloquent ORM에 중점을 두기 때문에 라우팅 설정과 컨트롤러에 대해서는 자세히 설명하지 않습니다. 여기서는 모델 모듈로 직접 이동합니다.
1. 데이터베이스 준비(Mysql)
여기서는 users와 users_ext라는 두 개의 테이블을 생성하고 데이터를 초기화해야 합니다.
<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. 데이터베이스 구성
Database.php에 데이터베이스 구성 추가:
<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. 사용자 모델 생성
appmodels 아래에 UserModel.php 생성
<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> }
이러한 User 모델이 성공적으로 생성되었으며 코드도 매우 간단합니다. 멤버 변수의 의미는 누구나 이해할 수 있을 것이라 생각합니다. 테이블 이름, 기본 키, 데이터베이스 연결 식별자(구성 파일 내)를 순서대로 나타냅니다.
5. UserModel 사용
이제 어디서나 사용할 수 있습니다. 컨트롤러와 라우터에서 사용할 수 있습니다. 다음은 간단한 예입니다.
이제 쿼리 문이 있습니다:
<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>
다음은 ORM 형식으로 구현되는 간단한 쿼리문입니다.
<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> }
쿼리 결과는 다음과 같습니다.
자, 위의 내용은 단순한 쿼리 예시일 뿐, 모듈 간의 연관성 등 아직 공부할 부분이 많습니다.
위 내용은 관련 내용을 포함하여 Eloquent ORM 연구 노트를 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.