laravel Eloquent 模型(也就是我本时说的Model)
laravel的 Eloquent 模型其实就是我们平时说的MVC里Model,只是换了个名字而已~
1)Eloquent 是啥?
Eloquent 本质就一个查询构建器(laravel里叫查询构建器,想上面所说的一样,它其实就是一个Model),所以它使用查询构建器的所以方法,
如果你不知道laravel查询构建器都有些什么方法,看这里:http://www.cnblogs.com/tujia/p/6292832.html
2)Eloquent 怎么用?
1、创建一个Eloquent 模型(生成的model方法位于app目录下)
php artisan make:model Goods
2、指定一下Model绑定的数据表及表主键(如果不声明表名及主键,默认的表名是model名字的复数,例如我这里的话,默认表名就成了Goodss了,默认主键是id)
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Goods extends Model
{
protected $table = "goods";
protected $primaryKey = "goods_id";
//
}
3、数据库操作的话,这按之前的查询构建器的写法来就行了,不过这里不再是用的 DB::table('table_name') 了,直接用$this就行了,例如:
$goods = $this->where('goods_id', '1')->first();
当然,这时在Model里方法的写法,在别的地方(例如控制器)调用Model的话,要实例化一个模型来调用
$goods = \App\Goods::where('goods_id', '1')->first();
如果我们需要通过模型查询多次的话,先实例化一个模型并赋值给一个变量是一个不错的选择
$goodsModel = new \App\Goods();
$row = $goodsModel->where('goods_id', $id)->first();
$count = $goodsModel->count();
3)Eloquent 模型特有的方法
Eloquent 除了具备 “查询构建器” 的所有功能(方法),它还自己的一些“更强大”的方法(DB::table不能使用的方法)
1、find 方法,find 方法可以查询一行或多行
$goodsModel = \App\Goods();
$one = $goodsModel->find(1);
$some = $goodsModel->find([1,2,3,4]);
2、save 方法,save 方法具备 insert 方法和 update 方法的功能(记录不存在时insert,记录存在时update)
$model->save(
['email' => 'john@example.com', 'votes' => 0]
); $model->save(
['id'=>1,'email' => 'john@example.com', 'votes' => 0]
);
更新时,需要提示数据表的主键字段,例如上面的id字段
PS:如果你在做数据迁移时,有设置到 $table->timestamps(),生成数据表时会有一个 created_at 字段 和 updated_at 字段,而使用save方法插入或更新记录时,这两个字段会被自动更新(使用insert和update方法没这种效果)
待续。。
laravel Eloquent 模型(也就是我本时说的Model)的更多相关文章
- 判断Laravel Eloquent获取数据结果集是否为空
在使用Laravel Eloquent模型时,我们可能要判断取出的结果集是否为空,但我们发现直接使用is_null或empty是无法判段它结果集是否为空的. var_dump之后我们很容易发现,即使取 ...
- Laravel Eloquent 判断取出的结果集是否为空
在使用Laravel Eloquent模型时,我们可能要判断取出的结果集是否为空,但我们发现直接使用is_null或empty是无法判段它结果集是否为空的. var_dump之后我们很容易发现,即使取 ...
- laravel Eloquent 查询数据库判断获取的内容是否为空
原文地址:https://www.cnblogs.com/love-snow/articles/7205338.html 在使用 Laravel Eloquent 模型时,我们要判断取出的结果集是否为 ...
- 使用laravel的Eloquent模型获取数据库的指定列
使用laravel的Eloquent模型获取数据库的指定列 使用Laravel的ORM——Eloquent时,时常遇到的一个操作是取模型中的其中一些属性,对应的就是在数据库中取表的特定列. 如果使 ...
- 【laravel】Eloquent 模型事件和监听方式
所有支持的模型事件 在 Eloquent 模型类上进行查询.插入.更新.删除操作时,会触发相应的模型事件,不管你有没有监听它们.这些事件包括: retrieved 获取到模型实例后触发 creatin ...
- 深入理解 Laravel Eloquent(三)——模型间关系(关联)
Eloquent是什么 Eloquent 是一个 ORM,全称为 Object Relational Mapping,翻译为 "对象关系映射"(如果只把它当成 Database A ...
- Laravel笔记--Eloquent 模型
Eloquent 模型 默认继承use Illuminate\Database\Eloquent\Model类. 数据表名称与模型名称约定: 数据库的表名一般使用“蛇形命名法”命名.蛇形命名法要求单词 ...
- Laravel Eloquent ORM 时如何查询表中指定的字段
导读:在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应...原文地址:http: ...
- 【Laravel】为Eloquent 模型设置全局作用域和局部作用域进行查询
全局作用域 所谓「全局作用域」,指的是预置过滤器在注册该「全局作用域」的模型类的所有查询中生效,不需要指定任何额外条件. 以 User 模型类为例,我们在系统中可能只想针对已经验证过邮箱的用户进行操作 ...
随机推荐
- oracle相关链接
shilei1的个人空间 http://blog.itpub.net/196700/
- php phpmail发送邮件的效果
方法一: /* * 发送邮件 原 smtp ...
- python学习笔记(19)--PTVS的安装
说明: 1. 折腾了两天eclipse,pydev,好不容易都弄好了,发现不会建工程,建完工程打不开,老是提示工作空间里有隐藏文件什么的,网上查了说是把.project里面的name标签的名字改了就行 ...
- 适配器模式和外观模式(head first设计模式——6)
为什么要把适配器模式和外观模式放在同一篇文章中,主要是其相对前面的几个模式来讲会简单些并且具有相似之处.下面就分别通过例子来看理解一下两种模式,然后再进行对其进行比较. 一.适配器模式 1.1适配器模 ...
- 从sql中image类型字段中导出图片
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- 【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header
一个ListView的MVVM简单例子: <ListView ItemsSource="{Binding GoodsList}" Margin="0,10,0,10 ...
- 设计和开发ETL系统(二)——启动
在针对某个维度模型开始ETL系统设计之前,应当完成逻辑设计,草拟高层架构计划,并且为所有的数据元素拟定源到目标映射. ETL的设计过程十分重要: 收集所有的相关信息,包括事物处理系统中所允许的提取处理 ...
- am335x ti SDK6.0 kernel 时钟源码文件记录
源码流程记录 板级文件开始 // arch/arm/mach-omap2/board-aplex_cmi_at101.c MACHINE_START(APLEX_CMI_AT101, "ap ...
- linux终端无打印信息的实现
linux启动时会又大量信息打印,若要使启动信息不打印,需修改内核中两处: 1. 内核配置项. CONFIG_SERIAL_ATMEL_CONSOLE=y //去掉终端配置选项.2. 内核解压缩 ...
- JVM中的垃圾回收
GC 垃圾回收回收什么 Java的内存分配原理与C/C++不同.C/C++每次申请内存时都要malloc进行系统调用.而系统调用发生在内核空间,每次都要中断进行切换,这须要一定的开销. 而Java虚拟 ...