Eloquent ORM 学习笔记
最近在学习Laravel,觉得ORM功能很强大,我这里只是简单探索了一点,如果有更好的笔记,还请分享。
因为重点在于Eloquent ORM,所以路由设置,控制器就不详细描述了,这里直接进入Models么模块。
1.数据库准备(Mysql)
在这里需要创建users和users_ext两张表,并初始化数据:
CREATE TABLE
IF NOT EXISTS users (
iAutoId INT (11) NOT NULL AUTO_INCREMENT,
sNmame VARCHAR (20),
iStatus TINYINT (4),
iCreateTime INT (11),
PRIMARY KEY (iAutoId)
) ENGINE = INNODB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1; INSERT INTO users (sNmame, iStatus, iCreateTime)
VALUES
('test1', 1, 1400085387),
('test2', 1, 1400085387),
('test3', 1, 1400085387),
('test4', 1, 1400085387),
('test5', 1, 1400085387),
('test6', 1, 1400085387); CREATE TABLE
IF NOT EXISTS users_ext (
iAutoId INT (11) NOT NULL AUTO_INCREMENT,
iAge DECIMAL (3, 0),
sSex TINYINT (4),
iUserID INT (11),
PRIMARY KEY (iAutoId)
) ENGINE = INNODB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1; INSERT INTO users_ext (iAge, sSex, iUserID)
VALUES
(24, 1, 1),
(109, 0, 2),
(25, 1, 3),
(20, 1, 5),
(68, 0, 4),
(48, 1, 6);
2.配置数据库
在database.php中添加数据库配置:
<?php
return [
'fetch' => PDO::FETCH_CLASS,
'default' => 'user',
'connections' => [
'user' => [
'driver' => 'mysql',
'host' => 'localhost:3306',
'database' => 'test',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
]
];
3.创建UserModel
在app\models下创建UserModel.php
<?php
class UserModel extends \Eloquent {
protected $table = 'users';
protected $primaryKey = 'iAutoID';
protected $connection = 'user';
}
这样一个User模型就创建成功了,代码很简单。至于其中成员变量的含义,相信都能看得懂,依次代表的是表名称、主键、数据库连接标识(配置文件中的)。
5.使用UserModel
现在你可以在任何地方使用了。控制器,路由里面都可以用。下面就在做个简单的列子:
现在有查询语句:
SELECT
users.sNmame,
users.iCreateTime,
users_ext.iAge,
users_ext.sSex
FROM
users
LEFT JOIN users_ext ON users.iAutoId = users_ext.iUserID
WHERE
users.iStatus = 1
AND users_ext.sSex = 0
ORDER BY
users.iCreateTime
LIMIT 0,
1
这里是简单的一个查询语句,接下来就以ORM的形式实现:
public function getUsers(){
$select = 'users.sNmame,users.iCreateTime,users_ext.iAge,users_ext.sSex';
$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();
var_dump($resData->toArray());
exit();
}
下面是查询结果:

ok ,以上只是对查询做了一个简单的例子,还有很多需要研究,比如模块之间的关联等等。
Eloquent ORM 学习笔记的更多相关文章
- ORM学习笔记
19周 11章 django ORM基本创建类型以及生成数据库结构 类型: dbfirst :通过数据库创建类 codefirst:先创建类 再创建数据库 --最常用 ORM的意思: 通过类创建数据库 ...
- Django模型层ORM学习笔记
一. 铺垫 1. 连接Django自带数据库sqlite3 之前提到过Django自带一个叫做sqlite3的小型数据库,当我们做本地测试时,可以直接在sqlite3上测试.不过该数据库是小型的,在有 ...
- Eloquent ORM 之关联查询
小伙伴们好,本文是在我的前一篇随笔的基础上完成的,还没有浏览的同学,请移尊驾哦 Eloquent ORM学习笔记. 前一篇文章用到了leftJoin方法,其实Eloquent对于模块之间的关联查询有自 ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- SQLAlchemy 学习笔记(二):ORM
照例先看层次图 一.声明映射关系 使用 ORM 时,我们首先需要定义要操作的表(通过 Table),然后再定义该表对应的 Python class,并声明两者之间的映射关系(通过 Mapper). 方 ...
- JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架
1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...
- Eloquent ORM笔记
基本操作 新增 $user = new User; $user->name = 'John'; $user->save(); $insertedId = $user->id;//从对 ...
- laravel5.5源码笔记(八、Eloquent ORM)
上一篇写到Eloquent ORM的基类Builder类,这次就来看一下这些方便的ORM方法是如何转换成sql语句运行的. 首先还是进入\vendor\laravel\framework\src\Il ...
- 慕客网laravel学习笔记
session中set方法使用 Session::set('user.username.age','18')嵌套使用得出$user = ['username'=>['age'=>18]]; ...
随机推荐
- curl 基本使用简介
curl是Linux下一个非常著名的下载库,通过这个库,可以很简单的实现文件的下载等操作.看一个简单的例子: #include <curl/curl.h> #include <std ...
- java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils Caused by: java.lang.ClassNotFou ...
- gridview列显示,截取其中前面的几个字显示出来,当鼠标放上去的时候显示全部——使用LinkButton的方法
使用LinkButton的方法<asp:LinkButton ToolTip ='<%#Eval("FilePath") %>' runat="serv ...
- Xs and Os Referee
Xs and Os Referee 1 def checkio(game_result): 2 winner = 'D' 3 4 for row in game_result: 5 if row[0] ...
- 如何允许外网可以连接mysql数据库
1.首先检查mysql所在服务器的防火墙,如果限制了外网对3306端口的连接,那么放开限制Linux服务器中执行 iptables -L 可以查看当前的防火墙规则iptables -F 可以清 ...
- Spring使用小结2
之前做过不少spring想过知识点内容的摘录, Spring框架的特点.模块组成.优缺点 spring相关的bean管理想过知识点及依赖注入方式 今天说下近端时间中项目中遇到的相关印象比较深的知识点 ...
- vijos1781 同余方程
描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一行,包含两个正整数a, b,用一个空格隔开. 输出格式 输出只有一行,包含一个正整数x0,即最小正整数解 ...
- 3Sum Smaller 解答
Question Given an array of n integers nums and a target, find the number of index triplets i, j, k w ...
- devStack for Openstack dev Env
devstack是一套用来给开发人员快速部署Openstack开发环境的脚本,其实对于整个安装过程没有什么好说的,因为脚本写的很完善,全程无脑式安装也没什么大问题,但是因为公司里的网络环境不给力,我的 ...
- 使用dojo的tree
dojo的Tree非常是灵活,可是官方站点上的样例却非常少,并且也比較分散,兴许将持续完好本样例. 总的来说,要使用tree,要接触到三个类:"dojo/store/JsonRest&quo ...