从任何表中返回数据都很简单。 让我们说:
user
表中检索数据。return Response::json(User::all());
但是,如果我希望将来自我的用户表and
所有的related
数据的数据作为json格式返回。
我该怎么做? 是否有任何Laravel机制可以帮助我做到这一点? 是否有任何PHP功能可以做到这一点?
如果您对此有任何经验,并希望分享,请随意。
感谢您的时间。 :)
答案 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响应。