Tengo una tabla total_count

+----+--------+-------+------+---------+---------+---------+
| id | studid | month | year | acls_id | total_p | total_a |
+----+--------+-------+------+---------+---------+---------+
| 1  |   30   |  08   | 2015 |   12    |    5    |    2    |
| 2  |   35   |  08   | 2015 |   12    |    5    |    2    |
| 3  |   52   |  08   | 2015 |   12    |    5    |    2    |
| 4  |   53   |  08   | 2015 |   12    |    5    |    2    |
| 5  |   54   |  08   | 2015 |   12    |    5    |    2    |
| 6  |   55   |  08   | 2015 |   12    |    5    |    2    |
| 7  |   30   |  09   | 2015 |   12    |    3    |    0    |
| 8  |   35   |  09   | 2015 |   12    |    3    |    0    |
| 9  |   52   |  09   | 2015 |   12    |    2    |    1    |
| 10 |   53   |  09   | 2015 |   12    |    3    |    0    |
| 11 |   54   |  09   | 2015 |   12    |    3    |    0    |
| 12 |   55   |  09   | 2015 |   12    |    3    |    0    |
+----+--------+-------+------+---------+---------+---------+

Quiero incremento y decremento para cada estudiante total_p y total_a.

cuando iam editar mi lista de asistencia de los estudiantes.

por ejemplo:studid 30 total_p = 5 y total_a= 2 ,por lo iam editar mi asistencia actualmente se ha convertido ausente .

lo desea disminuir total_p por 1 y el incremento de total_a por 1.

Así que me gustaría conseguir el total de cada mes para cada studid y un incremento y decremento de total_p y total_a para el total de meses.

Mi controlador de código es
foreach ($student as $student) {
if($present == 0){
$query = DB::table($wys_total_attend_table)
->where('studid',$student->id)
->where('smonth','=',$date_exploded[1])
->where('syear','=',$date_exploded[2])
->update([
'stotal_p' => DB::raw('stotal_p - 1'),
'stotal_a' => DB::raw('stotal_a + 1'),
]);
}
elseif($present ==1){
$query = DB::table($wys_total_attend_table)
->where('studid',$student->id)
->where('smonth','=',$date_exploded[1])
->where('syear','=',$date_exploded[2])
->update([
'stotal_p' => DB::raw('stotal_p + 1'),
'stotal_a' => DB::raw('stotal_a - 1'),
]);
}}

pero no funciona..

Cómo utilizar increment() y decrement() en el generador de consultas formato?

por ejemplo:si iam sólo editar studid =30 asistencia incremento total_p valor 1 y (presente==1)
studid =30 total_p=6 y total_a=1 y otros studid valores valor antiguo.

  • Está usted seguro de que su lógica SQL es la correcta?
  • lo siento, no sé…pero me quiere como este … if (actual==1) luego de incremento (stotal_p,1) y decremento (stotal_a,1) y si (presente==0) luego de incremento (stotal_a,1) y decremento (stotal_p,1) con estas, donde las condiciones son verdaderas.
  • Convertir el generador de código en una consulta de MySQL y ejecutar en contra de la asistencia a la mesa.
  • si usted no importa ..mi lógica es malo…me puede decir cual es el código correcto??
  • señor yo no quiero convertir mi generador de código en mysql….cómo utilizar incrementar ()y decremento () en el generador de consultas??
  • Creo que no has entendido mi punto. Quiero que ejecutar la consulta con la misma lógica para ver si el WHERE cláusula realmente devuelve ningún registro.
  • sí señor,,, iam ejecutar mi código anterior. tengo una respuesta errónea si excute (presente==1) incremento de la 1ª estudiante total_p valor de 1 (no correcsponding estudiante de valor)y tiene un error de Llamar a una función miembro decrementar() en un no-objeto

InformationsquelleAutor cnbwd | 2015-08-20

2 Comentarios

  1. 6

    incrementar() y decrementar() no devolver un Generador de Consultas objeto, por lo que no puede la cadena de sus llamadas como usted hace en su código:

    ->increment('stotal_p', 1)->decrement('stotal_a', 1); 

    Tendrás que llamar a cada método por separado. Por otra parte, 1 es el valor predeterminado para el de incremento/decremento, así que no hay necesidad de pasar.

    Esto debe hacer el truco:

    $query = DB::table($wys_total_attend_table)
    ->where('studid',$student->id)                                     
    ->where('smonth','=',$date_exploded[1])
    ->where('syear','=',$date_exploded[2]);
    $query->increment('stotal_a');
    $query->decrement('stotal_p');
    • sir este código funciona bien ..pero un problema, cuando estoy edición de uno de los estudiantes (por ejemplo:studid =35) ,quiero ejecutar este código sólo que studid(35) raw ,no todos los otros estudiantes… como actualización con la función de incremento y decremento. el uso de este cambio en el código de todos los studid valores.
    • Hay una donde() la restricción de la studid por lo que no es posible para la consulta para la actualización de otros studids. Pegar un poco más de su código y vamos a encontrar la razón
    • sir ,,,iam escribir mi código. plz de verificación de código de arriba.
    • Hacer «dd($alumno->id, $consulta->toSql());» y pegar el resultado
    • sir recibí un mensaje de error.. Llamar a una función miembro toSql() en un no-objeto
    • Hacer esto en la consulta en la respuesta, no en la consulta en el código
    • lo siento,,, la forma de su posible… quiero salvar de incremento y decremento de valor en la tabla de base de datos. cómo puede esta en la consulta en la respuesta.??lo siento, no.sabes…
    • dd(DB::table($wys_total_attend_table) ->donde(‘studid’,$alumno->id) ->donde(‘smonth’,’=’,$date_exploded[1]) ->donde(‘syear’,’=’,$date_exploded[2]))

  2. 2

    De Laravel 5.7+ puede incremento o decremento de la columna dada por el uso de increment() o decrement() métodos sin necesidad de escribir el manual de instrucción de actualización.

    Laravel Doc & Ejemplo

    https://laravel.com/docs/5.8/queries#increment-and-decrement

    DB::table('users')->increment('votes');
    DB::table('users')->increment('votes', 5);
    DB::table('users')->decrement('votes');
    DB::table('users')->decrement('votes', 5);

    Obtener la Asistencia de los Estudiantes

    $studentAtd = DB::table($wys_total_attend_table)
    ->where('studid',$student->id)                                     
    ->where('smonth','=',$date_exploded[1])
    ->where('syear','=',$date_exploded[2]);

    De incremento o Decremento de la columna Asistencia

    $studentAtd->increment('stotal_a');
    $studentAtd-> decrement('stotal_p');

Dejar respuesta

Please enter your comment!
Please enter your name here