我有一个 USER 表,一个 ITEMS 表和一个 LIKES 表。我从Items表中随机抽取了9个项目(名为'categories'),我希望得到一个喜欢该项目的用户数组。我正在返回一个JSON响应,所以就我所知,我不能使用laravel的ORM关系。我希望能够查看结果(使用javascript),如下所示:
foreach item
item->price
....
foreach user
(this is how i wish to look through the users with js)
endforeach
endforeach
{{--Im trying to get an output that looks like so--}}
0: {
cost: 409
views: 0
...
user_like_id: {1,5,2,4,5}
}
编辑:这就是我想将数组附加到...
$likes = Category::orderByRaw("RAND()")
->leftJoin('likes', 'likes.item_id', '=', 'categories.id')
->take(9)
->get();
我对编程比较陌生,所以请不要扼杀这个问题
答案 0 :(得分:0)
Laravel提供了从对象制作json的方法。第一个也是最简单的是雄辩的toJson()
方法:
$likes = Category::orderByRaw("RAND()")
->leftJoin('likes', 'likes.item_id', '=', 'categories.id')
->take(9)
->get()
->toJson();
$likes
现在是json。
第二种方法: 如果从控制器或routecallback函数返回模型,则laravel将其作为json返回。所以:
class MyController extends Controller{
public function getIndex(){
return Category::orderByRaw("RAND()")
->leftJoin('likes', 'likes.item_id', '=', 'categories.id')
->take(9)
->get();
}
}
此示例返回一个非常有用的json响应!
答案 1 :(得分:0)
我实际上得到了我想要的东西:
$likes = Category::orderByRaw("RAND()")
->take(9)
->with(array('getLikes' => function($query)
{
$query->with('getUser');
}))
->get();
完全按照我想要的方式工作:)感谢你的建议