Laravel中的MySQL子查询,如何连接查询并将第二个查询的结果作为新列添加到第一个查询?

时间:2016-09-30 13:31:00

标签: mysql database laravel laravel-5 laravel-query-builder

我有两张桌子:

CorsoVittorioEmanueleII920122Milano

我想查询第一个表,同时在子查询中计算(并作为新列返回)所有类似的产品。我如何组合以下查询?

Corso Vittorio Emanuele II 9 20122 Milano

如何使用Laravel查询实现此目的? 谢谢!

3 个答案:

答案 0 :(得分:0)

不是您特别要求的答案,但作为替代方案,使用Eloquent非常容易处理。

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

答案 1 :(得分:0)

使用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

答案 2 :(得分:0)

试试这个

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