首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel Eloquent ORM 实现查询表中指定字段

使用Laravel ORMModel方法find, get, first方法获取数据对象时返回数据对象attributes属性数组里会包含数据表中所有的字段对应键值关系, 那么如何在ORM查询时只返回数据表中指定字段数据呢...Builder是依赖查询构建器\Illuminate\Database\Query\Builder,first和get方法源码在Query Builder里如下: /** * Execute...LaravelORM方法查询返回指定字段可通过如下三种方法来实现 $data = ModelA::find($id, ['column1', 'column2']); $data = ModelA...', 'column2']); $data = ModelA::where(['column1', '=', 'value'])- get(['column1', 'column2']); 在不同场景下三者中选符合需要使用即可...以上这篇Laravel Eloquent ORM 实现查询表中指定字段就是编分享给大家全部内容了,希望能给大家一个参考。

3.1K21

Laravel代码简洁之道和性能优化

思考:如何提高Model层查询DB效率?如何精简代码?...经过一番调研之后发现了一个堪称神器扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...作为使用复合键和原始表达式示例,请考虑以下表,该表计算每个帖子和每天访问者: Schema :: create ( 'stats' , function ( Blueprint $ table )...Lumen 如果您使用 Lumen,则必须手动实例化查询构建器: $builder = new \Staudenmeir\LaravelUpsert\Query\Builder(app('db')->connection...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel5.2之Seeder填充数据技巧

说明:本文主要聊一聊Laravel测试数据填充器Seeder技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程中一些截图和代码黏上去,提高阅读效率。...设计字段 按照上文提到Category、Post、Comment和Tag之间关系创建迁移Migration和模型Model,在项目根目录输入: php artisan make:model Category...Database\Query\Builder|\App\Post whereSummary($value) * @method static \Illuminate\Database\Query\Builder...Laravel官方推荐使用模型工厂自动生成测试数据,推荐这么写: //先输入指令生成database/seeds/CategoryTableSeeder.php文件: php artisan make...分享下最近发现一张好图和一篇极赞文章: 文章链接:Laravel中大型專案架構

3.5K42

3分钟短文:Laravel模型作用域,为你“节省”更多代码

引言 原则上代码写一次,处处是引用,不需要大量冗余代码,这是一种趋势,也是提高代码健壮性努力方向。 laravel模型为我们提供了一层数据库操作层,将数据交互独立出来。...events WHERE `published` = 1; 如果条件 published = 1 在默认情况下需要开启,我们可以使用laravel模型 全局作用域 方式为所有查询追加上这个条件。...本地作用域 接上一节 withoutGlobalScope 要每次手动屏蔽方式不同,有时候使用有局限作用域更能解决问题。...而声明一个本地作用域,只要遵循laravel语法规定即可,如下示例: public function scopePublished($query) { return $query->where('published...', 1); } 只需要声明一个以 scope 为首驼峰命名函数方法即可,并返回一个 QueryBuilder 对象实例。

1.4K22

Laravel系列4.5】主从库配置和语法生成

但是你要知道是,Laravel 以及现代化所有框架都是可以方便地配置主从分离。另外,我们还要再回去 查询构造器 中,看一下我们原生 SQL 语句拼装语法到底是如何生成。...这也是因为我们在某些业务中,需要在操作完数据后马上查询,主从之间延迟可能会导致查询从库数据不正确(这在现实业务中很常见)。...从这里我们可以看出,Laravel 是根据参数来判断是否使用从库连接进行查询,而我之前看过其它框架源码,是 Yii 还是 TP 什么来着,有根据查询语句是否有 SELECT 字符来判断走从库去查询...语法生成 讲完连接了我们再回来讲讲数据库连接中非常重要一个东西,那就是 SQL 语句是怎么生成。这里使用是 语法 这个高大上词汇,实际上简单理解就是 查询构造器 是如何生成 SQL 语句。...其实我们在 查询构造器 那篇文章中就已经看到过 Laravel如何生成 SQL 语句了,还记得我们分析那个 update() 方法吗?

4.3K20

orm 系列 之 Eloquent演化历程2

本文是orm系列第三篇,也是Eloquent演化第二篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大版本,但是毕竟个人能力有限,不可能分析非常完善,总会有不懂地方...,彼此之间都过接口交流,最大进行了解耦。...本文最后讲下Eloquent中新增对象之间关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...例如,假设应用用户既可以对文章进行评论也可以对视频进行评论,使用多态关联,你可以在这两种场景下使用单个comments表,首先,让我们看看构建这种关联关系需要表结构: posts id - integer...首先是morphMany构造函数: public function __construct(Builder $query, Model $parent, $morphName) { $this

2.4K30

Laravel5.2之模型关联预加载

说明:本文主要说明Laravel Eloquent延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程中一些截图和代码黏上去,提高阅读效率。...看看有没有预加载会有什么不同。...开发环境:Laravel5.1+MAMP+PHP7+MySQL5.5 先写个店铺列表页 1.先装上开发插件三件套(具体可参考:Laravel5.2之Seeder填充数据技巧) 不管咋样,先装上开发插件三件套...: 然后写Seeder,可以参考Laravel5.2之Seeder填充数据技巧: php artisan make:seeder MerchantTableSeeder php artisan make...发现:只有4个query,耗时3.58ms,效率提高很多。把原来N+1这种query改造成了where..in..这种query,效率提高不少。可以用EXPLAIN来查看SQL语句执行计划。

2.5K41

Laravel源码分析之模型关联

使用模型关联给应用开发带来收益我认为有以下几点 主体数据和关联数据之间关系在代码表现上更明显易懂让人一眼就能明白数据间关系。...按照Laravel设定好模式来写关联模型每个人都能写出高效和优雅代码 (这点我认为适用于所有的Laravel特性)。...我们通过官方文档里例子来看一下Laravel是怎么定义这两种关联。 一对多 class Post extends Model { /** * 获得此博客文章评论。...多对多 多对多关联不同于一对一和一对多关联它需要一张中间表来记录两端数据关联关系,官方文档里以用户角色为例子阐述了多对多关联使用方法,我们也以这个例子来看一下底层是怎么来定义多对多关联。...动态属性加载关联模型 上面我们定义了三种使用频次比较高模型关联,下面我们再来看一下在使用它们时关联模型时如何加载出来

9.5K10

Api 开发之include机制

没必要数据增加了数据库操作,增加了数据响应。 正确做法应该是,服务端返回基础数据,在根据客户端传参返回其相关联数据 如何实现?...通过laravel第三方扩展包 spatie/laravel-query-builder 官方文档:https://docs.spatie.be/laravel-query-builder/v2/introduction.../ 1.composer 引入 composer require spatie/laravel-query-builder 2.控制器使用 use Spatie\QueryBuilder\QueryBuilder...我们还可以键入某个scope(查询作用域)对数据进一步过滤,本文使用了定义好withOrder作用域 //调用排序函数 public function scopewithOrder($query....基础数据 图片 2.关联数据 上面的方式已经很好解决了我们问题,但是代码不够精炼,试想如果我们每个资源都要使用include机制那每个方法都会键入类似如下代码 $topics = QueryBuilder

1.3K10
领券