Eloquent ORM 學習筆記


  最近在學習Laravel,覺得ORM功能很強大,我這里只是簡單探索了一點,如果有更好的筆記,還請分享。

  因為重點在於Eloquent ORM,所以路由設置,控制器就不詳細描述了,這里直接進入Models么模塊。

 

  1.數據庫准備(Mysql)

  在這里需要創建users和users_ext兩張表,並初始化數據  

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

 

  2.配置數據庫

  在database.php中添加數據庫配置:

  

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

  3.創建UserModel

  在app\models下創建UserModel.php  

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

  這樣一個User模型就創建成功了,代碼很簡單。至於其中成員變量的含義,相信都能看得懂,依次代表的是表名稱、主鍵、數據庫連接標識(配置文件中的)。

 

  5.使用UserModel

  現在你可以在任何地方使用了。控制器,路由里面都可以用。下面就在做個簡單的列子:

  現在有查詢語句:  

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

  

  這里是簡單的一個查詢語句,接下來就以ORM的形式實現:

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

  

  下面是查詢結果:

  

  ok ,以上只是對查詢做了一個簡單的例子,還有很多需要研究,比如模塊之間的關聯等等。

  

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM