
这篇关于Laravel 一对多关联模型 Eloquent下with() 函数只返回指定列的文章,觉得挺不错的,感兴趣的php开发者可以参考下,希望对大家在学习php的成长路上有所帮助!
下面我们来看一篇关于Laravel Eloquent下with() 函数只返回指定列的例子,希望这个例子能够为各位带来帮助,具体的如下所示。
通过 with 函数获取数据的例子参照:laravel实现一对多关联模型数据查询
接着上面这篇文章,我们知道这里获取的是 user 的所有字段信息,但是我们可能并不需要 user 表中所有的字段,例如我们只需要 id 和 name 两个字段,即:
select * from `posts`
select id,name from `users` where `users`.`id` in (<1>,<2>)
我们可以通过下面四种方法来实现
方法一:在 with() 中指定
Post::with(['user' => function($query) {
$query->select('id','name');
}])->get();
方法二:修改 Model 文件
修改 Post.php 文件中 user() 方法:
public function user() {
return $this->belongsTo('User')->select(['id', 'name']);
}
然后直接调用:
Post::with('methodUser')->get();
方法三:
在 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');
}
}
然后使用就很方便了:
Posts::find(20)->withOnly('user', ['name'])->get();
方法四:
直接:
Posts::find(20)->with('methodUser:id,name')->get();总结
以上就是关于Laravel 一对多关联模型 Eloquent下with() 函数只返回指定列全部内容,希望这篇文章能够帮你解决如相关的PHP问题,更多请关注PHP栏目的其它相关文章!