如何在Laravel中将数据库字段值增加1

时间:2015-08-17 10:27:05

标签: laravel-4

我有一个学生出勤。

字段/数据样本

id | studid | cls_id | smonth | syear | total_p | total_a
1  |   20   |   2    |   08   | 2015  |   2     |   1
2  |   21   |   2    |   08   | 2015  |   1     |   0
3  |   22   |   2    |   08   | 2015  |   2     |   1

我想要检查上次更新中每个学生的total_ptotal_a值,然后递增1。

如果我输入,则两位学生都是present = 1,所以我想要total_p value 20=3, 21=2, 22=3

如何获取数据库字段值并增加1?

我的控制器

$present = Input::get($student->id);
if ($checkatt)
{
    if ($present == 1)
    {
        DB::table($wys_total_attend_table)->where('studid', $student->id)
            ->where('smonth', $date_exploded[1])
            ->where('syear', $date_exploded[2])
            ->where('stotal_p', 1)
            ->update(array(
                'stotal_p' => 1 + 1,
            ));
        DB::table($wys_total_attend_table)->where('studid', $student->id)
            ->where('smonth', $date_exploded[1])
            ->where('syear', $date_exploded[2])
            ->where('stotal_p', 0)
            ->update(array(
                'stotal_p' => 1,
                'stotal_a' => 0,
            ));
    } elseif ($present == 0)
    {
        DB::table($wys_total_attend_table)->where('studid', $student->id)
            ->where('smonth', $date_exploded[1])
            ->where('syear', $date_exploded[2])
            ->where('stotal_a', 1)
            ->update(array(
                'stotal_a' => 1 + 1,
            ));
        DB::table($wys_total_attend_table)->where('studid', $student->id)
            ->where('smonth', $date_exploded[1])
            ->where('syear', $date_exploded[2])
            ->where('stotal_a', 0)
            ->update(array(
                'stotal_a' => 1,
            ));
        DB::table($wys_total_attend_table)->where('studid', $student->id)
            ->where('smonth', $date_exploded[1])
            ->where('syear', $date_exploded[2])
            ->where('stotal_p', 1)
            ->where('stotal_a', 0)
            ->update(array(
                'stotal_a' => 0 + 1,
            ));
    }
}

1 个答案:

答案 0 :(得分:2)

我想你只想更新total_p和total_a列的每条记录,只是简单一点:

//get the id of student
$student_id = Input::get('student_id');
$present = Input::get('status'); //dropdown value 0,1
//You need a model for your table let say:
#Student.php
<?php
class Student extends Eloquent{
    protected $table = 'students'; //table name 
}
//Your Controller codes
public function findStudent($id, $status){
$query=Student::find($id);
if($query->count() && $status==1 ){ //status 1 = present
  $query->total_p += 1; //plus one value in the total_p column in the tbl.
  $query->save();
 }else{
  $query->total_a +=1;
  $query->save();
 }
}