Laravel 在 with 查询中只查询个别字段
来源:互联网 发布:淘宝小二布置作业短信 编辑:程序博客网 时间:2024/06/01 09:46
第一种方法,很方便,但有局限性,因为这个不能针对不同表关联去设置不同的关联字段
public function childs(){ return $this->hasMany('App\Tree','parend_id','id')->select('id','parent_id','title');}
第二种办法如下,可以在写查询的过程中指定需要关联的字段
在使用 Laravel 的关联查询中,我们经常使用 with
方法来避免 N+1
查询,但是 with
会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的。
这时候我们可以使用下面的技巧在使用 with 时只查询目标关联的部分字段:
$topics = Topic::limit(2)->with(['user'=>function($query){ $query->select('id','username');}])->get();
但是每次查询都写得这么繁琐真的好么?不如利用 Laravel 的范围查询将其封装起来:
在 Model 基类中定义一个范围查询(或者使用 Trait)
class BaseModel extends \Eloquent{ public function scopeWithOnly($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)->withOnly('user', ['username'])->get();
0 0
- Laravel 在 with 查询中只查询个别字段
- laravel中查询语句
- hibernate 只查询某个字段
- 关于SQL中查询重复字段只显示一条记录
- 查询数据库中某个字段在哪张表
- SQLSERVER查询字段在哪个表中
- mysql中查询一个字段在哪几张表中
- SQLserver2000中 针对查询结果中存在不固定字段时 如何排除固定字段只查询不固定字段
- laravel中的关联查询with问题
- 查询字段中最小值
- 查询字段中最小值
- Hibernate高效查询,只查询部分/指定字段
- Hibernate高效查询,只查询部分/指定字段
- Hibernate高效查询,只查询部分/指定字段
- ABAP--在查询条件只包含部分索引字段时,如何使用索引
- MySQL 只distinct一个字段,查询多个字段。
- 在查询分析器中,用快捷键取得字段的列表。
- 字段名带“call”在hibernate中查询出错
- int main(int argc, char *argv[])
- Application、Activity Stack 和 Task的区别
- 成为Java高手的25个学习要点
- (2017年1月4日)解决Android studio无法更新和无法下载genymotion插件问题http://blog.csdn.net/narunishino/article/details/5
- 架构组织形式的讨论,以及架构师之路的建议
- Laravel 在 with 查询中只查询个别字段
- 同步与异步的通俗解释
- Android中dip(dp)与px之间单位转换
- Word2Vec中文语料实战
- Linux命令--ln详解
- mysql的内链接和左右连接的区别
- 即时通讯(融云)
- 糖尿病治療
- 集成permissiondispatcher权限封装