如何从数据库及其相关数据查询所有用户


How to query all users from database and it's related data?

从任何表返回数据都非常简单。比方说:

  • 我想以 json 格式从我的user表中检索数据。
  • 我可以简单地这样做。 return Response::json(User::all());

但是,如果我想从我的用户表中返回数据and所有数据都以 json 格式related数据。

我该怎么做?是否有任何Laravel机制可以帮助我做到这一点?有没有可以做到这一点的php函数?

如果你们中的任何人对此有任何经验,并想分享,请随时。

谢谢你的时间。:)

您可以使用

with() 方法预先加载关系:

return Response::json(User::with('address', 'phones')->get());

但是,您必须手动指定所有关系(即您必须指定"地址"和"电话"(。 据我所知,没有内置的方法可以以编程方式确定关系。

编辑

您应该能够链接with()调用,或者在一次with()调用中指定所有关系。以下语句应全部等效:

// chaining with statements
return Response::json(User::with('address')->with('phones')->get());
// passing all relationships as strings
return Response::json(User::with('address', 'phones')->get());
// passing in array of all relationships
return Response::json(User::with(array('address', 'phones'))->get());

此外,要传入的关系的名称是定义关系的函数的名称。因此,如果您有以下类:

class User extends Eloquent
{
    public function distributor()
    {
        return $this->hasOne('Distributor');
    }
    public function download()
    {
        return $this->hasOne('Download');
    }
    public function log()
    {
        return $this->hasOne('Log');
    }
}

您的呼叫如下所示:

return Response::json(User::with('distributor', 'download', 'log')->get());

试试吧

Users::with("userinfo")->get()->toJson();

toJson()给出 JSON 响应。