如何从Laravel获取数据库中列的平均值

时间:2018-07-23 07:09:39

标签: php mysql laravel

我的交易表有4列(其他与查询无关)

  • trans_id:整数,pk
  • user_id:整数,fk
  • 金额:两倍
  • bus_id:整数

我正在尝试通过平均amount列来获取他们花费的平均金额,但是我的响应一直持续,因为找不到列。

  public function userDollarAverage(Request $request)
  {
    $business = $request->input('bus_id');
    $user = $request->input('user_id');
    $getAvgAmount = Transactions::whereColumn([
      ['user_id', '=', $user],
      ['bus_id', '=', $business]
      ])->avg('amount');
    return response()->json(['average' => $getAvgAmount]);
  }

我的迁移

  Schema::create('Transactions', function (Blueprint $table) {
            $table->increments('transaction_id');
            $table->unsignedInteger('user_id');
            $table->foreign('user_id')->references('user_id')->on('users');
            $table->integer('bus_id')->nullable();
            $table->double('amount')->nullable();
        });

我正在传递的json

{
    "user_id": 51,
    "bus_id": 1
}

它们也全部列在我的模型下     protected $fillable = [];

但是我仍然遇到错误:

  • Illuminate \ Database \ QueryException:SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'51'(SQL:从amount中选择avg(transactions)作为聚集(user_id = 51bus_id = 1)在文件C:\ Users \ Jermayne \ API \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection中.php 664行
  • 我不知道为什么我得到了未知的“ 51”列

1 个答案:

答案 0 :(得分:0)

whereColumn更改为where,您应该就在路上。

whereColumn用于将各列进行比较。