深入理解 Laravel Eloquent(一)——基本概念及用法

转载 2015年07月07日 16:18:34

在本系列文章中,我将跟大家一起学习 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

class 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 的文章打印其标题

$article = Article::find(2);

echo $article->title;

查找标题为“我是标题”的文章,并打印 id

$article = Article::where('title', '我是标题')->first();

echo $article->id;

查询出所有文章并循环打印出所有标题

$articles = Article::all(); // 此处得到的 $articles 是一个对象集合,可以在后面加上 '->toArray()' 变成多维数组。

foreach ($articles as $article) {

    echo $article->title;

}

查找 id 在 10~20 之间的所有文章并打印所有标题

$articles = Article::where('id', '>', 10)->where('id', '<', 20)->get();

foreach ($articles as $article) {

    echo $article->title;

}

查询出所有文章并循环打印出所有标题,按照 updated_at 倒序排序

$articles = Article::where('id', '>', 10)->where('id', '<', 20)->orderBy('updated_at', 'desc')->get();

foreach ($articles as $article) {

    echo $article->title;

}

基础使用要点

1. 每一个继承了 Eloquent 的类都有两个 '固定用法' 'Article::find($number)' 'Article::all()',前者会得到一个带有数据库中取出来值的对象,后者会得到一个包含整个数据库的对象合集。

2. 所有的中间方法如 'where()' 'orderBy()' 等都能够同时支持 '静态' 和 '非静态链式' 两种方式调用,即 'Article::where()...' 和 'Article::....->where()'。

3. 所有的 '非固定用法' 的调用最后都需要一个操作来 '收尾',本片教程中有两个 '收尾操作':'->get()' 和 '->first()'。

4. 如果你不理解为什么 'Article' 这个类可以使用 '->where()' '->get()' 等很多方法的话,说明你需要去读一下 PHP 对象继承的文档了:对象继承

Laravel数据库操作的三种方式

Laravel提供了3种操作数据库方式:DB facade(原始方式)、查询构造器和Eloquent ORM。下面我将逐一讲解。 数据库的配置文件在config目录下的database.php里。打...
  • zls986992484
  • zls986992484
  • 2016年10月15日 20:45
  • 41589

深入理解 Laravel Eloquent(一)——基本概念及用法

原文发表在我的个人网站:深入理解 Laravel Eloquent(一)——基本概念及用法 在本系列文章中,我将跟大家一起学习 Eloquent 的基本用法,探索 Eloquent 的各种高级...
  • xiangyong882000
  • xiangyong882000
  • 2015年01月07日 18:04
  • 266

PHP资源列表

PHP资源列表 一个PHP资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等。 初始翻译信息来自:《推荐!国外程序员整理的 ...
  • u013279509
  • u013279509
  • 2017年11月29日 14:28
  • 98

MVC5学习小记(3)--数据库操作

首先MVC怎么对数据库进行操作的呢,这里用到了微软的神器,EF6 EF4.1有三种方式来进行数据操作及持久化。分别是Database-First,Model-First,Code-first:   ...
  • u014119694
  • u014119694
  • 2017年07月18日 14:40
  • 118

在Laravel外使用Eloquent(二)- 分页问题

在上一篇《在Laravel外使用Eloquent(一)》 中我们演示了如何引入Eloquent以及基本使用,但是如果细心的朋友肯定会发现,当你在使用paginate(15)来分页的时候是会报错的。因为...
  • fatigue
  • fatigue
  • 2015年01月07日 17:50
  • 2071

深入理解 Laravel Eloquent(一)——基本概念及用法

在本系列文章中,我将跟大家一起学习 Eloquent 的基本用法,探索 Eloquent 的各种高级功能,理解 Eloquent 背后的运行原理,并最终达到深入理解、灵活使用 Eloquent 的目的...
  • wangjinbao5566
  • wangjinbao5566
  • 2016年12月07日 11:07
  • 156

laravel的Eloquent其他笔记

1.集合: Eloquent返回的所有的包含多条记录的结果集都是 'Illuminate\Database\Eloquent\Collection' 对象的实例。例如:通过 get(),all()等...
  • beyond__devil
  • beyond__devil
  • 2017年01月08日 13:48
  • 703

10.Laravel5学习笔记:Laravel中的批量赋值探索

问题描述在使用laravel的 seed 功能的时候,经常有同学会看到以下这个异常 [Illuminate\Database\Eloquent\MassAssignmentException] ...
  • hel12he
  • hel12he
  • 2015年07月23日 15:35
  • 3941

学习笔记—在laravel4.2中配置mongodb

因为公司的需求, 在原先Laravel的框架上需要储存大量的用户操作记录。所以选择了mongodb来进行存储。 相比于SGBDR,laravel自带强大的Eloquent之并不直接支持Nosql。但是...
  • sucre_en_morceaux
  • sucre_en_morceaux
  • 2016年05月31日 01:36
  • 1033

php Laravel框架学习(二) 之 Eloquent 高级应用

php Laravel框架学习(二) 之 Eloquent 高级
  • yimiyuangguang
  • yimiyuangguang
  • 2014年10月03日 14:12
  • 1281
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入理解 Laravel Eloquent(一)——基本概念及用法
举报原因:
原因补充:

(最多只允许输入30个字)