如何将类似的数字添加到我的 API 列?

How do I add like numbers to my API column?

我们正在准备具有 Laravel 基础架构的移动应用程序。我在我的 api 来源中使用相关表格,我想另外将用户评论和喜欢的数量添加到此 api 来源。我该怎么做?

此外,我希望收到对相关用户主题发表的评论和对我的 api 来源点赞的用户信息。

喜欢 Table:id,user_id,post_id
评论 Table:id,user_id,post_id,描述

函数

public function user_posts($id)
{
    return DB::table('posts')
        ->leftJoin('users', 'posts.user_id', '=', 'users.id')
        ->leftJoin('likes', 'likes.user_id', '=', 'users.id')
        ->where('posts.user_id', '=', $id)
        ->select('posts.*', 'posts.user_id', 'posts.description', 'likes.user_id as like_user_id', 'likes.post_id as like_post_id')
        ->get();
}

URL: http://warm.test/api/users/6/posts

路线:Route::get('/users/{id}/posts/like', [LikeController::class, 'like_show'])->name('users.like_show');
输出:

    [
  {
    "id": 6,
    "user_id": 6,
    "image": "https://lorempixel.com/800/400/cats/warem/?39492",
    "description": "Laboriosam rem unde velit nihil. Hic enim quidem necessitatibus eum aut voluptates. Molestiae voluptas voluptas nam neque qui illum. In autem aut illo sunt cumque numquam. Sit quia rerum maiores eius. Et ut aut inventore omnis tenetur ut eveniet delectus.",
    "created_at": "2015-04-04 07:51:39",
    "updated_at": "2020-12-25 08:55:40",
    "like_user_id": 6,
    "like_post_id": 6
  },
  {
    "id": 6,
    "user_id": 6,
    "image": "https://lorempixel.com/800/400/cats/warem/?39492",
    "description": "Laboriosam rem unde velit nihil. Hic enim quidem necessitatibus eum aut voluptates. Molestiae voluptas voluptas nam neque qui illum. In autem aut illo sunt cumque numquam. Sit quia rerum maiores eius. Et ut aut inventore omnis tenetur ut eveniet delectus.",
    "created_at": "2015-04-04 07:51:39",
    "updated_at": "2020-12-25 08:55:40",
    "like_user_id": 6,
    "like_post_id": 5
  }
]

正如您所说,您在 Laravel 我建议您使用 Laravel Eloquent,它使事情变得容易得多。 在您的情况下,我们需要 Post、点赞和评论模型。

喜欢class:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\Post;

class Like extends Model
{
    // Define relationships here
    public function post() 
    {
        return $this->belongsTo(Post::class);
    }
}

评论class:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\Post;

class Comment extends Model
{
    public function post() 
    {
        return $this->belongsTo(Post::class);
    }
}

Post class:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\Like;
use App\Models\Comment;

class Post extends Model
{
    public function likes()
    {
        return $this->hasMany(Like::class);
    }

    public function comments() {
        return $this->hasMany(Comment::class);
    }
}

您的控制器操作方法:

public function userPosts($id)
{
    return Post::withCount('likes', 'comments')->where('user_id', '=', $id)->get();
}

示例输出:

    [
  {
    "id": 6,
    "user_id": 6,
    "image": "https://lorempixel.com/800/400/cats/warem/?39492",
    "description": "Laboriosam rem unde velit nihil. Hic enim quidem necessitatibus eum aut voluptates. Molestiae voluptas voluptas nam neque qui illum. In autem aut illo sunt cumque numquam. Sit quia rerum maiores eius. Et ut aut inventore omnis tenetur ut eveniet delectus.",
    "created_at": "2015-04-04 07:51:39",
    "updated_at": "2020-12-25 08:55:40",
    "likes_count": 6,
    "comments_count": 2
  },
    ...
    ]