如何在 Laravel 8 中編寫子查詢?

因法斯·穆罕默德
SELECT 
    posts.id,
    (select count(*) from post_likes where post_id = 13 and user_id = 12) as post_like
FROM
    posts
LIMIT 5

如何在 Laravel 查詢構建器中編寫此查詢?

烏魯丁

如果您的 ORM 模型已定義(並且您同時擁有PostPostLike模型),請在您的Post.php模型中創建一個關係(如果還沒有),例如:

public function likes(){
  return $this->hasMany(PostLike::class);
}

然後,如果您只需要計數,請嘗試以下操作:

$userId = 12;

$postList = Post::query()
    ->whereId(13)
    ->withCount(['likes', 'likes AS post_like' => function ($query) use($userId) {
        $query->where('user_id', '=', $userId);
    }])
    ->limit(5)
    ->get();
// Then do something with result.
foreach ($postList as $post) {
    $count = $post['post_like'];
}

請注意,上面我們使用post_like別名並限制為user_id,只是為了滿足許多 OP 要求;否則,我們可以簡單地設置likes_count關係的數量,例如:

->withCount('likes')

但是您可以使用whereHas(...)eloquent 方法對子查詢使用關係,例如:

Post::query()->whereHas('likes', function($query){
  $query->where(...your statements for sub query go there);
}, '>', 4)->limit(5)->get(); //Select where more than 4 relation found with given parameters

有關更多信息,請參閱:https : //laravel.com/docs/8.x/eloquent-relationships#querying-relationship-existence

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Laravel 8 中使用 PostgreSQL 中的子查詢通過 group by 子句獲取行值?

如何在 Laravel 中編寫這個 sql,left join,sum 查詢?如何在 Laravel 中使用左連接求和?

如何在 Laravel 8 中使用 WhereIn 查詢

如何在 Laravel 中為具有某些條件(例如是否具有關係)的屬性編寫 orderBy 查詢

如何在查詢中與工人及其旁邊的經理一起編寫查詢

如何在 Laravel 8 中处理 NotFoundHttpException?

如何使用返回多個值的子查詢編寫正確的觸發器

在編寫查詢 Laravel 時遇到麻煩

如何在laravel查詢中轉換SQL查詢?

如何編寫查詢以在 AnyLogic 中獲得不相等?

如何編寫查詢來執行此操作?

如何使用 Joins 和 Group by 編寫查詢

如何編寫遞歸 SQL 查詢

如何使用查詢生成器將原始子查詢轉換為 Laravel 查詢?

如何在 Laravel 8 中全局使用表单中的变量?

如何在 laravel 8 中从表单中插入多行

如何在 Laravel 8 中创建临时表

如何在laravel 8中使用复合主键?

如何在laravel 8中预选多项选择

如何在 Laravel 8 的 AssertableJson 中測試數組?

如何在 Laravel 8 中查找 css 文件

如何在Laravel 8中更改Jetstream徽标?

如何在Laravel 8中通过Composer创建Jetstream项目?

如何在Laravel 8中无键声明错误

如何在laravel 8中保存多个选择?

如何在Laravel 8中使用JavaScript提取?

如何在Laravel 8中集成PayPal智能按钮?

如何在Laravel 8中访问CSS文件?

Laravel 8:如何在模型中设置输出样式