所以我在Laravel中构建一个RESTful API。到目前为止,我有一个更简单的控制器,如下所示:
class TripController extends Controller
{
public function index()
{
$data = Trip::all();
return $data;
}
}
我得到了回复:
[
{
"id": 1,
"created_at": "2015-07-06 21:01:03",
"updated_at": "2015-07-06 21:01:03",
"created_by": 1,
"updated_by": 1,
"description": "Sample Trip",
"aircraft_id": 1
}
]
这正是我要求的。事情是' created_by',' updated_by'和' aircraft_id'是外键。我知道我可以使用我在模型中设置的关系开始解析我的外键,例如:
$createdByName = App\Trip::first()->createdBy()->get('name');
但这需要在集合上进行一些循环,以使用外键所需的信息(基本上是名称)替换id。在使用它来返回JSON时,Laravel有一种聪明的方法吗?
答案 0 :(得分:1)
如果您通过雄辩声明模型上的关系,则可以使用eager loading来提供相关模型。
Trip::with('aircraft','createdBy','updatedBy')->all();
否则,如果您只想包含名称属性之类的内容,则可以使用laravels accessor methods为Trip模型添加属性 定义这样的访问器:
public function getAircraftNameAttribute()
{
return $this->aircraft->name;
}
通过将其添加到$ appends数组中,将其包含在模型array-或json-form中:
protected $appends = ['aircraft_name'];
请参阅here的文档。