laravel with 渴求式加载指定字段
2016-06-17 15:43
706 查看
在使用 Laravel 的关联查询中,我们经常使用
这时候我们可以使用下面的技巧在使用 with 时只查询目标关联的部分字段:
但是每次查询都写得这么繁琐真的好么?不如利用 Laravel 的范围查询将其封装起来:
在 Model 基类中定义一个范围查询
在我们普通的 Model 类都继承基类:
然后使用就很方便了:
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();
相关文章推荐
- PHP变量常量语言结构大小写敏感与…
- 运行laravel时 出现的异常及解决解决: cmd cd到根目录 前提安装了composer 输入:php artisan key:generate 将生成的key复制
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- php打乱数组二维数组多维数组的简单实例
- php中利用reset,current,next和each,list来遍历数组
- 阻止PHP彩蛋信息泄漏 [转]
- PHP 将数组打乱 shuffle函数的用法及简单实例
- php curl无法开启的问题
- PHP 数组基本操作方法详解
- laravel 查看sql
- php算法-牛群增长
- Ubuntu 搭建PHP环境
- Ubuntu 14.04 搭建 ftp
- NTP服务器的搭建和介绍
- PHPStorm Xdebug配置
- sftp 下载 批量下载,单个下载,工具类
- PHP CI 框架教程 (1) -- 安装和简介
- variable handing函数-->isset()
- JHTP自测题_第四章_控制语句Part 1-赋值、++、--运算符
- php判断远程图片或文件是否存在