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

时间:2014-12-19 17:29:00

标签: php mysql json laravel laravel-4

从任何表中返回数据都很简单。 让我们说:

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

但是,如果我希望将来自我的用户表and 所有related数据的数据作为json格式返回。

我该怎么做? 是否有任何Laravel机制可以帮助我做到这一点? 是否有任何PHP功能可以做到这一点?

如果您对此有任何经验,并希望分享,请随意。

感谢您的时间。 :)

2 个答案:

答案 0 :(得分:2)

您可以使用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());

答案 1 :(得分:1)

试试吧

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

toJson()提供JSON响应。