在laravel中使用with()获取特定列,并在模型中添加字段

时间:2016-12-13 03:11:30

标签: php laravel laravel-5 laravel-5.2

在我的用户模型中,我有一个追加字段:

protected $appends = [
      'is_admin'
];

通过使用with()eager loading,它将在每个请求中附加is_admin字段。但是,在某些情况下,我不想返回is_admin字段,我正在尝试使用以下内容:

$this->belongsTo('App\Models\User')
            ->select(['id', 'username', 'first_name', 'last_name']);

但它不起作用。 即使我使用客户选择字段,是否仍会附加追加字段?

2 个答案:

答案 0 :(得分:1)

模型序列化时使用

appends;它附加了'属性到输出。

如果您只有一个型号,并且您希望不将appends个访问者添加到序列化数据中,则可以将它们设置为hidden

示例:

$test = new class extends Illuminate\Database\Eloquent\Model {
    protected $appends = ['is_admin'];

    public function getIsAdminAttribute() {
        return rand(0, 1);
    }
};

dump($test->toArray()); // will contain 'is_admin'

$test->makeHidden('is_admin');

dump($test->toArray()); // will not contain 'is_admin'

// This can be applied to Eloquent Collections.

$model->relation->makeHidden('is_admin');

一种方法。

答案 1 :(得分:0)

只需将此结果放入变量

i  <- x$V2 == ""
#i <- grepl("^Q", x$V1) #Alternative
cbind(header=rep(x$V1[i], rle(i)$lengths[c(FALSE,TRUE)]), x[!i,])
#   header   V1     V2
#2     Q 1 1234  data1
#3     Q 1 1235  data2
#4     Q 1 1236  data3
#6     Q 2 1237  data5
#7     Q 2 1238  data6
#8     Q 2 1239  data7
#9     Q 2 1240  data8
#11    Q 3 1241 data10

并直接使用

$data = $this->belongsTo('App\Models\User')->select(['id', 'username', 'first_name', 'last_name']);  

这将为您服务