深入理解 Laravel Eloquent(一)——基本概念及用法
来源:互联网 发布:unix网络编程卷1 源码 编辑:程序博客网 时间:2024/06/03 13:33
原文发表在我的个人网站:深入理解 Laravel Eloquent(一)——基本概念及用法
在本系列文章中,我将跟大家一起学习 Eloquent 的基本用法,探索 Eloquent 的各种高级功能,理解 Eloquent 背后的运行原理,并最终达到深入理解、灵活使用 Eloquent 的目的。本系列教程是 Laravel 4 系列入门教程(一)【最适合中国人的Laravel教程】的扩展篇,没看过的话别忘了去看一下哦~
本篇是本系列的第一篇,主要讲述 Eloquent 的基本概念和用法。
什么是 Eloquent
Eloquent 是 Laravel 的 ORM
,即 Object Relational Mapping
,对象关系映射。ORM 的出现是为了帮我们把对数据库的操作变得更加地方便。
Eloquent 让一个 Model类
对应一张数据库表,并且在底层封装了很多 function
,可以让 Model 类非常方便地调用。我们以 Learn-Laravel-4 中的app/models/Article.php
为例大致说明一下。这个文件的代码如下:
php
<?phpclass Article extends \Eloquent { protected $fillable = [];}
protected $fillable = [];
这一行代码在这里没有任何价值,是 generator 自动生成的,在此我们不做讨论。
这个类简直再简单不过了,没有指定命名空间,没有构造函数,如果那一行没有意义的代码也不算上的话,这个文件就只有两个有实际意义的东西: Article
和\Eloquent
。没错,Eloquent 就是这么屌炸天,只需要继承一下 Eloquent 类,就可以干 first() find() where() orderBy()
等非常非常多的事情,这就是面向对象的强大威力。
Eloquent 基本用法
Eloquent 中文文档在:http://laravel-china.org/docs/eloquent
废话不多说,下面我将直接展示 Eloquent 的几种常见用法的代码,在 MarkDown 编辑器里面纯手打,若有拼写错误大家见谅。
找到 id 为 2 的文章打印其标题
php
$article = Article::find(2);echo $article->title;
查找标题为“我是标题”的文章,并打印 id
php
$article = Article::where('title', '我是标题')->first();echo $article->id;
查询出所有文章并循环打印出所有标题
php
$articles = Article::all(); // 此处得到的 $articles 是一个对象集合,可以在后面加上 `->toArray()` 变成多维数组。foreach ($articles as $article) { echo $article->title;}
查找 id 在 10~20 之间的所有文章并打印所有标题
php
$article = Article::where('id', '>', 10)->where('id', '<', 20)->get();foreach ($articles as $article) { echo $article->title;}
查询出所有文章并循环打印出所有标题,按照 updated_at 倒序排序
php
$article = Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get();foreach ($articles as $article) { echo $article->title;}
基础使用要点
- 每一个继承了 Eloquent 的类都有两个
固定用法
Article::find($number)
Article::all()
,前者会得到一个带有数据库中取出来值的对象,后者会得到一个包含整个数据库的对象合集。 - 所有的中间方法如
where()
orderBy()
等都能够同时支持静态
和非静态链式
两种方式调用,即Article::where()...
和Article::....->where()
。 - 所有的
非固定用法
的调用最后都需要一个操作来收尾
,本片教程中有两个收尾操作
:->get()
和->first()
。 - 如果你不理解为什么
Article
这个类可以使用->where()
->get()
等很多方法的话,说明你需要去读一下 PHP 对象继承的文档了:对象继承。
下一步:深入理解 Laravel Eloquent(二)——中间操作流(Builder)
- 深入理解 Laravel Eloquent(一)——基本概念及用法
- 深入理解 Laravel Eloquent(一)——基本概念及用法
- 深入理解 Laravel Eloquent(一)——基本概念及用法
- 深入理解 Laravel Eloquent(二)——中间操作流(Builder)
- 深入理解 Laravel Eloquent(三)——模型间关系(关联)
- 深入理解 Laravel Eloquent(二)——中间操作流(Builder)
- 深入理解 Laravel Eloquent(三)——模型间关系(关联)
- 在Laravel外使用Eloquent(一)
- laravel(三)Eloquent
- 深入理解 Laravel Eloquent(三)——模型间关系(关联) 在本篇文章中,我将跟大家一起学习 Eloquent 中最复杂也是最难理解的部分——模型间关系。官方英文文档中叫 Relatio
- Laravel Eloquent ORM 实例教程 —— 模型删除及软删除相关实现
- 深入理解Java:注解(Annotation)(一)——基本概念
- Laravel Eloquent ORM 一种高级用法
- laravel稀罕的Eloquent模型的用法
- 深入理解Java(一):注解(Annotation)基本概念
- C语言01深入理解基本概念(一)
- laravel 服务容器实例——深入理解IoC模式
- 深入理解Laravel框架--手动创建laravel框架(1)
- 优化临时表使用,SQL语句性能提升100倍
- 汉诺塔
- 浅谈前端组件的开发思路
- SearchBar 的触发事件
- 浓浓的小公司味道
- 深入理解 Laravel Eloquent(一)——基本概念及用法
- 创建操作/删除多行数据的UITableView的细节
- [Java基础] 构造器
- 添加 Bash 自定义命令
- nohup failed to run command, permisson denied
- 源码文件
- 对session和cookie的一些理解
- 基于XMPP协议(openfire服务器)的消息推送实现
- 用户过亿,成熟产品如何全面拥抱公有云?