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 ,以上只是对查询做了一个简单的例子,还有很多需要研究,比如模块之间的关联等等。

  

  

  

时间: 2024-10-13 08:05:55

Eloquent ORM学习笔记的相关文章

Eloquent ORM 之关联查询

小伙伴们好,本文是在我的前一篇随笔的基础上完成的,还没有浏览的同学,请移尊驾哦 Eloquent ORM学习笔记. 前一篇文章用到了leftJoin方法,其实Eloquent对于模块之间的关联查询有自己封装,接下来我们就一起研究Eloquent的关联是如何应用的. 1.创建Models 前一篇文章创建了UserModel,其实对于users_ext也可以创建一个Model:  UserExtModel.php <?php class UserExtModel extends \Eloquent

Lavavel笔记 Eloquent ORM分页源码分析

安装了laravel-debugbar后打开一个列表页面,发现页面输出有两个 select count(*) 语句,这是一个严重的设计缺陷呀. 查看代码 $users = User::where('votes', '>', 100)->paginate(15); $count = User::where('votes', '>', 100)->count(); 之前就感觉paginate分页应该是使用了count,但是不知道怎么取总量数据所以又写了一个count(). var_du

laravel3学习笔记(四)

原作者博客:ieqi.net ==================================================================================================== 视图 Laravel3遵循MVC模式,视图层负责将控制器处理好的数据展示出来,view层相关代码文件保存在application/views目录下,并且以php结尾. 因为PHP本身就可以和HTML混写的特性,一般而言,PHP框架的View层某种程度上也可以作为模板使

laravel3学习笔记(五)

原作者博客:ieqi.net ==================================================================================================== 模型 在MVC模式的Web框架中,模型Model作为数据的抽象而存在,在Model层中,我们放置直接对数据的各种处理和操作,然后将抽象过的数据操作暴露为Model类给控制器,这样,在控制器中我们就不必拘泥于处理具体数据现实的各种细节中了,比如数据库如何连接,数据的类型

laravel3学习笔记(六)

原作者博客:ieqi.net ==================================================================================================== ORM Laravel3中MVC体系中Model里最重要的组成部分无疑是ORM了,ORM — object-relational mapper — 将数据操作面向对象化,使得整个web框架的核心风格统一,降低整体复杂度,为开发者提供便利. Laravel3中的ORM叫

Android:日常学习笔记(10)———使用LitePal操作数据库

Android:日常学习笔记(10)---使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表.増删改查的操作.并且LitePal很"轻",jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别.目前LitePal的源码已经托管到了GitHub上. 关

[原创]java WEB学习笔记76:Hibernate学习之路---Hibernate介绍,hibernate 环境的搭建

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Javascript MVC 学习笔记(一) 模型和数据

写在前面 最近在看<MVC的Javascript富应用开发>一书,本来是抱着一口气读完的想法去看的,结果才看了一点就傻眼了:太多不懂的地方了.只好看一点查一点,一点一点往下看吧,进度虽慢但也一定要坚持看完.本学习笔记是对书上所讲解内容的理解和记录. 笔记里的代码大多会按书上摘录下来,因为<MVC的Javascript富应用开发>是结合了JQuery库,所以对于JQuery中不太懂的知识点也会附在代码后面,也算是一些额外的收获. MVC概述 要学习MVC,首先得知道MVC是什么,MV

Django学习笔记汇总

1. 学习历程 从学了Python以来,我都一直想着用它来做点什么.从开始用python来写简单的工具脚本,然后再是网络信息抓取程序. 听说可以用Python来做网站,所以我了解了一下web.py与Django.第一次接触Django,由于没有网络方面的基础,所以没弄两下就放弃了. 后来,我研究了一下Python自来的SimpleHTTPServer,然后读懂了CGIHTTPServer,才对Web的实质有了了解. 在这个基础上,我再次重拾Django.这次,终于学会了. 原来它是那么的美妙!