如何在 Laravel Eloquent Query Builder 中编写复杂的 sql 查询
How can I write complex sql query in Laravel Elequent Query Builder
下面显示的是我在 SQL 服务器中的查询。它在 SQL 服务器工作室中运行良好。我怎样才能把它写成 Laravel eloquent 格式?
我尝试了 DB::table('Price')... 方法和 Price::where()... 模型方法。通过使用这两种方法,我无法找到平均值。
这是 eloquent 查询生成器的限制吗?
在 Laravel 中获取输出的最佳方法是什么?
select month([Date]) as Date,
avg(Oil) as Oil,
avg(Gas) as Gas,
from [mydatabase].[dbo].[Price]
where year([Date]) = 2017
group by (month([Date]))
This is the output I get from sql
我得到了答案
$result = DB::select(DB::raw("select month([Date]) as Date,
avg(Oil) as Oil,
avg(Oil_Parity) as Gas,
from [mydatabase].[dbo].[Price]
where year([Date]) = :year
group by (month([Date]))"),['year'=>$year]);
dd($result);
您可以使用 Raw expressions
来实现
$query = DB::table('Price')
->select(DB::raw('avg(Oil) as Oil, avg(Gas) as Gas, month'))
->where('year', '==', '2017')
->groupBy('month')
->get();
You can use laravel's built in function DB::raw("complex query goes here").
对于您的查询,类似下面的内容是可能的
$data = DB::raw("select month([Date]) as Date,
avg(Oil) as Oil,
avg(Gas) as Gas,
from [mydatabase].[dbo].[Price]
where year([Date]) = ?
group by (month([Date]))", ['2017']);
下面显示的是我在 SQL 服务器中的查询。它在 SQL 服务器工作室中运行良好。我怎样才能把它写成 Laravel eloquent 格式?
我尝试了 DB::table('Price')... 方法和 Price::where()... 模型方法。通过使用这两种方法,我无法找到平均值。
这是 eloquent 查询生成器的限制吗? 在 Laravel 中获取输出的最佳方法是什么?
select month([Date]) as Date,
avg(Oil) as Oil,
avg(Gas) as Gas,
from [mydatabase].[dbo].[Price]
where year([Date]) = 2017
group by (month([Date]))
This is the output I get from sql
我得到了答案
$result = DB::select(DB::raw("select month([Date]) as Date,
avg(Oil) as Oil,
avg(Oil_Parity) as Gas,
from [mydatabase].[dbo].[Price]
where year([Date]) = :year
group by (month([Date]))"),['year'=>$year]);
dd($result);
您可以使用 Raw expressions
来实现 $query = DB::table('Price')
->select(DB::raw('avg(Oil) as Oil, avg(Gas) as Gas, month'))
->where('year', '==', '2017')
->groupBy('month')
->get();
You can use laravel's built in function DB::raw("complex query goes here").
对于您的查询,类似下面的内容是可能的
$data = DB::raw("select month([Date]) as Date,
avg(Oil) as Oil,
avg(Gas) as Gas,
from [mydatabase].[dbo].[Price]
where year([Date]) = ?
group by (month([Date]))", ['2017']);