在我的用户模型中,我有一个追加字段:
protected $appends = [
'is_admin'
];
通过使用with()eager loading,它将在每个请求中附加is_admin字段。但是,在某些情况下,我不想返回is_admin字段,我正在尝试使用以下内容:
$this->belongsTo('App\Models\User')
->select(['id', 'username', 'first_name', 'last_name']);
但它不起作用。 即使我使用客户选择字段,是否仍会附加追加字段?
答案 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']);
这将为您服务