最近在學習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 ,以上只是對查詢做了一個簡單的例子,還有很多需要研究,比如模塊之間的關聯等等。