php 模型 with,Laravel 一对多关联模型 Eloquent下with() 函数只返回指定列

Laravel 一对多关联模型 Eloquent下with() 函数只返回指定列

下面我们来看一篇关于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']);

}

方法三:

在 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');

}

}

然后使用就很方便了:

$user = User::limit(2)->withOnly('user', ['name'])->get();

/php/25433.htmlwww.phpzy.comtrue/php/25433.htmlTechArticleLaravel 一对多关联模型 Eloquent下with() 函数只返回指定列 下面我们来看一篇关于Laravel Eloquent下with() 函数只返回指定列的例子,希望这个例子能够为各位带来帮助,具体的如下所示。 通过...

你可能感兴趣的:(php,模型,with)