laravel with 渴求式加载指定字段
时间:2019-01-25
本文章向大家介绍laravel with 渴求式加载指定字段,主要包括laravel with 渴求式加载指定字段使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在使用 Laravel 的关联查询中,我们经常使用 with
方法来避免 N+1
查询,但是 with
会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的。
这时候我们可以使用下面的技巧在使用 with 时只查询目标关联的部分字段:
$topics = Topic::limit(2)->with(['user'=>function($query){
$query->select('id','username');
}])->get();
但是每次查询都写得这么繁琐真的好么?不如利用 Laravel 的范围查询将其封装起来:
在 Model 基类中定义一个范围查询
class BaseModel extends \Eloquent{
public function scopeWithCertain($query, $relation, Array $columns)
{
return $query->with([$relation => function ($query) use ($columns){
$query->select(array_merge(['id'], $columns));
}]);
}
}
在我们普通的 Model 类都继承基类:
class Topic extends BaseModel{
public function user()
{
return $this->belongsTo('User');
}
}
然后使用就很方便了:
$topics = Topic::limit(2)->withCertain('user', ['username'])->get();
- Linux文本流
- Linux并发与同步
- Android Studio快捷键每日一练(5)
- 2017年移动行业五大发展趋势及2018年前景展望(下)
- 剑指OFFER之反转链表(九度OJ1518)
- Android Studio快捷键每日一练(4)
- Android Studio快捷键每日一练(3)
- 一分钟教你在博客园中制作自己的动态云球形标签页
- Python标准库06 子进程 (subprocess包)
- 摩拜、美团也伸手共享汽车拉!众多品牌里面,这三家最牛!
- Android Studio快捷键每日一练(2)
- Linux进程间通信
- Android Studio快捷键每日一练(1)
- Android开发中的全屏背景显示方案
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Android自定义控件实现时钟效果
- Android倒计时控件 Splash界面5秒自动跳转
- Android仿抖音上下滑动布局
- 一个简单的Android轨迹动画
- Android自定义圆环倒计时控件
- Android 使用URLConnection下载音频文件的方法
- Android自定义TimeButton实现倒计时按钮
- android自定义圆形倒计时显示控件
- android实现上下左右滑动界面布局
- Android使用MediaCodec将摄像头采集的视频编码为h264
- Android开发人脸识别登录功能
- Android利用碎片fragment实现底部标题栏(Github模板开源)
- Android MediaPlayer 播放音频的方式
- Android切圆角的几种常见方式总结
- Android DSelectorBryant 单选滚动选择器的实例代码