[英]Subquery in Select Statement in Laravel 5.2
我想在選擇語句中使用此子查詢
select category from `categories` WHERE id = `products`.`category_id`
這是我方法的選擇語句部分
$query = $this->select(
DB::raw('COUNT(DISTINCT(`order_details`.`product_id`)) as productCount'), 'products.category_id',
DB::raw('('.DB::select('select category from `categories` WHERE id = `products`.`category_id` ').') AS category ')
);
錯誤:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.category_id' in 'where clause' (SQL: select category from `categories` WHERE id = `products`.`category_id` )
我討厭使用直接選擇語句。 因為這不好,如果我要更改數據庫。
盡管使用了直接選擇語句,但它不起作用。 我怎樣才能做到這一點 ?
只需更新您的以下聲明
DB::raw('('.DB::select('select category from `categories` WHERE id = `products`.`category_id` ').') AS category ')
進入
DB::raw('(select category from `categories` WHERE id = `products`.`category_id`) AS category')
在這里的錯誤是未知列products.category_id
你需要檢查你已經category_id
你的表內
請遵循以下示例之一的子查詢:
$result = static::select('id')
->where( 'id', '!=', $currentLevelId)
->where('level', '>', DB::raw("(SELECT level FROM " . $this->table . " WHERE id='".$currentLevelId."')") )
->orderBy('level')->first();
結果查詢:
SELECT * FROM `approval_levels` WHERE `id` != 2 AND `level` > (SELECT LEVEL
FROM approval_levels WHERE id='2') ORDER BY `level` ASC LIMIT 1
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.