如何使用子查询计算 Laravel 中的产品图片

How to use Subquery for Count Product Images in Laravel

我是 Laravel 的新手,如何使用 Laravel Eloquent.

进行以下 mysql 查询
SELECT p.*, 
(
    SELECT COUNT(*) FROM product_images AS pi WHERE pi.productID = p.productID
)AS totalImages
FROM products AS p 

您可以使用 DB::raw 将子查询注入 select:

Product::from('products p')
    ->select(DB::raw('p.*, (SELECT COUNT(*) FROM product_images AS pi WHERE pi.productID = p.productID) AS totalImages'));

也可以选择在 Product 模型和 Image 模型之间建立 one-to-many 关系:

class Product extends Eloquent {

    public function images()
    {
        return $this->hasMany('Image');
    }

}

之后您可以像这样获取图像数:

Product::find($productId)->images()->count();