get(),它将返回如下: "songs": [ { "id": 43, -6ren">
gpt4 book ai didi

php - 在 Laravel 中,如何让 "with"返回一个 bool 值而不是对象,如果存在则返回 true,如果不存在则返回 false

转载 作者:行者123 更新时间:2023-12-02 08:57:05 25 4
gpt4 key购买 nike

例如,我们有一个歌曲表和一个收藏夹(歌曲)表。

如果我使用Songs::with('favorites')->get(),它将返回如下:

"songs": [
{
"id": 43,
"name": "Song 1",
"favorites": [
{
"id": 52,
"user_id": 25,
"song_id": 43
}
]
},
{
"id": 44,
"name": "Song 2",
"favorites": []
},

我想做的是,如果该歌曲被收藏,则返回1,如果没有,则返回0,如下:

  {
"id": 43,
"name": "Song 1",
"favorites": true (or 1)
},
{
"id": 44,
"name": "Song 2",
"favorites": false (or 0)
},

有没有一种方法可以做到这一点,而无需在 PHP 中手动运行返回的集合数组?

最佳答案

我认为这是使用 Eloquent 的最简单的解决方案

Song::withCount([
'favorites' => function ($query) {
$query->select(DB::raw('IF(count(*) > 0, 1, 0)'));
}
])->orderBy('favorites_count', 'desc');

关于php - 在 Laravel 中,如何让 "with"返回一个 bool 值而不是对象,如果存在则返回 true,如果不存在则返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38768461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com