【发布时间】:2013-12-14 19:30:51
【问题描述】:
我正在构建一个客户端应用程序,它需要在我的服务器 API 响应中包含相关模型的 ID。
在我的示例中,我有两个模型,一个 Post 模型和一个 Tag 模型。它们之间的关系是多对多的,所以需要一个数据透视表。
class Post extends Eloquent {
protected $fillable = [ 'title', 'body' ];
public function tags()
{
return $this->hasMany('Tag');
}
}
class Tag extends Eloquent {
protected $fillable = [ 'title' ];
public function posts()
{
return $this->belongsToMany('Post');
}
}
我在/api/posts 路由上设置了一个资源丰富的控制器,如下所示:
class PostsController extends \BaseController {
public function index()
{
$posts = Post::all();
return Response::json([ 'posts' => $posts->toArray() ]);
}
}
这将返回一个很像这样的响应:
{
"posts": [
{
"title": "Laravel is awesome",
"body": "Lorem Ipsum..."
},
{
"title": "Did I mention how awesome Laravel is?",
"body": "Lorem Ipsum..."
}
]
}
我正在寻找一种在响应中包含相关标签模型的 ID 的简单方法,如下所示:
{
"posts": [
{
"title": "Laravel is awesome",
"body": "Lorem Ipsum...",
"tags": [ 1, 2, 3 ]
},
{
"title": "Did I mention how awesome Laravel is?",
"body": "Lorem Ipsum...",
"tags": [ 1, 2, 4 ]
}
]
}
【问题讨论】: