从任何表返回数据都非常简单。比方说:
- 我想以 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 响应。