当我进行Laravel急切加载时,我需要别名:
$posts = Post::with(array('images as main_image' => function($query) // do not run
{
$query->where('number', '=', '0');
}))
->where('id', '=', $id)
->get();
return Response::json($posts);
我需要这个,因为我想要像这样的JSON响应:
[
{
"id": 126,
"slug": "abc",
"name": "abc",
"created_at": "2014-08-08 08:11:25",
"updated_at": "2014-08-28 11:45:07",
"**main_image**": [
{
"id": 223,
"post_id": 126
...
}
]
}
]
有可能吗?
答案 0 :(得分:2)
完美!你给我这个主意。最后我做到了这一点:
<强> post.php中强>
public function main_image()
{
return $this->hasMany('FoodImage')->where('number','=','0');
}
public function gallery_images()
{
// for code reuse
return $this->main_image();
}
<强> PostController.php 强>
$posts = Post::with:with('main_image')->with('gallery_images')
->where('id', '=', $id)
->get();
答案 1 :(得分:0)
我认为你不能用Eloquent做到这一点,但会有一些可行的解决办法。
如果您使用的是PHP 5.6,则可以对该功能进行别名。
use function images as main_image;
如果您使用的PHP版本低于此版本,则可以创建main_image()
函数并将其调用images()
。
public function main_image()
{
return $this->images();
}