簡體   English   中英

Laravel中的MySQL子查詢,如何聯接查詢並將第二查詢的結果作為新列添加到第一查詢?

[英]MySQL sub query in Laravel, how to join queries and add second query's result as a new column to first query?

我有兩個表:

- PRODUCTS (having: ID, NAME, PRICE)
- LIKES (having: ID, PRODID, NAME)

我想查詢第一個表,同時在子查詢中計數(並返回為新列)該產品具有的所有贊。 如何合並以下查詢?

$products = DB::table('PRODUCTS')
                  ->get();

$likes = DB::table('LIKES')
                  ->select(DB::raw('count(*) as total'))
                  ->where('PRODID', '=', 'product id from first table')
                  ->get();

如何使用Laravel查詢實現這一目標? 謝謝!

這不是您明確要求的答案,但是作為替代,使用Eloquent非常容易處理。

$products = Product::with('likes');
foreach ($products as $product) {
    echo 'Number of likes: '.$product->likes->count();
}

使用帶有group by子句的聯接,而不是子查詢。 這樣,您可以一次獲得所有產品的計數,而不必一一查詢。 sql如下所示:

select p.id, p.name, p.price, count(l.id) as likecount
from products p
left join likes l on p.id=l.prodid
group by p.id, p.name, p.price

這樣嘗試

$likes = DB::table('LIKES')
      ->join('PRODUCTS', 'LIKES.PRODID', '=', 'PRODUCTS.id') 
      ->select('LIKES.*') 
      ->where('PRODUCTS.id', '=', 3)      
      ->get();
$total_like = count($likes); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM