mysql - 如何在 Laravel 中使用子查询计算产品图片数量

标签 mysql laravel laravel-4 eloquent

我是 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在选择中注入(inject)子查询:

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

还有一种选择是设置 one-to-many Product 模型和 Image 模型之间的关系:

class Product extends Eloquent {

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

}

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

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

关于mysql - 如何在 Laravel 中使用子查询计算产品图片数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517317/

相关文章:

mysql - Laravel Crypt - 比较值

php - 调用未定义的方法 Illuminate\Notifications\Messages\MailMessage::via()

javascript - 如何使用 Vue 禁用表单提交时的 window.onbeforeunload ?

php - 如何检查 Controller 上的 token (CSRF)?

php - App::singleton 和 bindShared 有什么区别?

php - 相同的字符集 html 和 sql 但有错误

php - 加载数据本地 INFILE php mysql

mysql - 安装MySQL后连接到node.js

mysql - 选择从上个月开始的所有行

php - 你可以在 Laravel 4.1 中重新加载 Boris 而无需退出吗?