我想在数据库中使用_id
,但想在查询时输出id
。
我怎样才能实现它?
答案 0 :(得分:2)
你可以尝试这个(使用Accessor):
<强>模型强>
public function getIdAttribute() {
return $this->attributes['_id'];
}
控制器测试
$user = User::find(1);
// this will call getIdAttribute which will return the `_id`
dd($user->id);
如果要显示它,也可以覆盖toArray()方法:
<强>模型强>
// ..
// getIdAttribute()
// ..
public function toArray()
{
$array = parent::toArray();
$array['id'] = $this->id;
unset($array['_id']);
return $array;
}
控制器测试
$user = User::find(1);
dd($user->toArray());
答案 1 :(得分:1)
另一种方法是使用变形金刚(http://fractal.thephpleague.com/transformers/)。这里有一个Laravel服务提供商(https://github.com/gathercontent/laravel-fractal)。 它会以优雅的方式做到这一点:)
当然,如果你只需要使用“id”字段,我会像zorx那样告诉:
public function getIdAttribute() {
return $this->attributes['_id'];
}
但你可能会把它放在一些BaseModel或abstractModel类中,这是你需要它的模型的父类。