首页 > 代码库 > Eloquent ORM学习笔记

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 VALUES12     (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 TABLE20 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 VALUES30     (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 <?php2 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 WHERE10     users.iStatus = 111 AND users_ext.sSex = 012 ORDER BY13     users.iCreateTime14 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 ,以上只是对查询做了一个简单的例子,还有很多需要研究,比如模块之间的关联等等。

  

 

  

  

Eloquent ORM学习笔记