laravel mongodb如何在输出中将_id更改为id?

时间:2016-04-28 12:49:29

标签: mongodb laravel laravel-5

我想在数据库中使用_id,但想在查询时输出id

我怎样才能实现它?

2 个答案:

答案 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类中,这是你需要它的模型的父类。