Laravel - Consulta

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 4 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Consulta

Publicado por Valeria (3 intervenciones) el 11/02/2019 22:10:39
Hola, tengo un problema al momento de mostrar una consulta por medio de una variable en la vista me aparece un error :
Undefined property: Illuminate\Support\Collection::$updated_at (View: C:\xampp\htdocs\parchegato\resources\views\admin\reports\scoreTable.blade.php)


Solo lo hace en el td de fechaCumplientoUser y el de observacionUser

Por favor si saben el porque del erro me lo dirían. Gracias

Este es parte del código de la vista

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@if(!is_null($users))
    <table id="datatable-buttons" class="table table-striped table-bordered">
      <thead>
        <tr>
          <th>Fecha de calificación</th>
          <th>Nombres</th>
          <th>Apellidos</th>
          <th>Calificaci&oacute;n promedio</th>
          <th>Observaciones</th>
        </tr>
      </thead>
        <tbody>
          @foreach($users as $user)
            <tr>
              <td id="fechaCumplientoUser {{ $user->id }}">{{$date->updated_at}}</td>
              <td id="nombreUser{{ $user->id }}">{{ $user->first_name }}</td>
              <td id="apellidoUser{{ $user->id }}">{{ $user->last_name }}</td>
              <td>
                @if(is_object($user->score))
                  <div class="scoreTable" data-score="{{ $user->averageScore() }}"></div>
                @else
                  <div class="scoreTable" data-score="{{ $user->averageScore() }}"></div>
                @endif
                  </td>
                    <td id="observacionUser{{$user->id}}">{{$date->observations}}
                    </td>
                  </tr>
                @endforeach
              </tbody>
            </table>
          @endif



Este es el código de la funciona del controlador para esa vista


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public function scoreTable($rol = null){
 
    $roles = \App\UsersRoles::where('state', '=', '1')->get();
    $users = \App\User::get(['id', 'first_name', 'last_name']);
    $date = \App\Scores::get(['id','updated_at', 'observations']);
 
 
    if($users){
        $users = [];
    }
 
    $rolGet = $rol;
 
    $users = null;
    if(!is_null($rol)){
        $users = User::where('rol_id', '=', $rol)
                    ->where('state', '=', '1')
                    ->get();
    }
 
    if ($date) {
        $date = [];
 
    }
 
    $date = null;
    if(!is_null($rol)){
    $date = DB::table('scores')->select('updated_at')
                               ->where('scores.id', '=', $rol)
                              ->get();
 
    }
    return view('admin.reports.scoreTable', compact(['roles', 'users', 'rolGet', 'date']));
}
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier (orzo) Rodríguez
Val: 49
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Consulta

Publicado por Javier (orzo) Rodríguez (17 intervenciones) el 12/02/2019 08:56:19
Hola, Valeria.
De manera predeterminada, Laravel espera que en las tablas se encuentren los campos updated_at y created_at.
Mira https://laravel.com/docs/5.7/eloquent
Estos campos se actualizan solos y pueden servirte como primary-key o, simplemente, como un registro de la actividad de la base de datos.
Si no quieres utilizarlos, debes añadir
1
$timestamps=false;
en el modelo.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 4 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Consulta

Publicado por Respuesta (3 intervenciones) el 12/02/2019 17:06:11
Hola, muchas gracias por la respuesta, encontré la solución realizando una sola consulta anidada con la variable $user, obteniendo los datos esperados sin embargo al momento de consultar al usuario que tiene mas privilegios en la aplicación no me muestra los datos, entonces ya tengo otra dificultad :'(

Ahora estoy en el proceso de encontrar el porque no me muestra los datos de ese usuario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier (orzo) Rodríguez
Val: 49
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Consulta

Publicado por Javier (orzo) Rodríguez (17 intervenciones) el 13/02/2019 11:15:47
Hola de nuevo.

Si los datos de tu usuario los muestras a partir de esta instrucción

1
2
3
$users = User::where('rol_id', '=', $rol)
->where('state', '=', '1')
->get();

aparentemente deberías de poder mostrar cualquier campo del model User.
¿Te da algún error?
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 4 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Consulta

Publicado por Respuesta (3 intervenciones) el 13/02/2019 14:19:03
Hola :) realice la consulta con join para obtener los datos, lo llame en la vista (el código de la vista solo se le modifico la variable $date por la variable $user con el campo de la tabla) y me arrojo los campos que solicitaba de los usuarios excepto el que tenía mayores privilegios, con ese no visualizaba nada al momento de seleccionarlo, tampoco me mostraba error.

Este el cogido de como quedo la función en el controlador con la nueva consulta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public function scoreTable($rol = null){
 
 
    $roles = \App\UsersRoles::where('state', '=', '1')->get();
    $users = \App\User::get(['id', 'first_name', 'last_name']);
 
    if($users){
        $users = [];
    }
 
    $rolGet = $rol;
 
    $users = null;
 
 
    if(!is_null($rol)){
        $users = User::join('scores', 'scores.user_id', '=', 'users.id')
                        ->select('users.id', 'users.first_name', 'users.last_name', 'scores.updated_at', 'scores.observations')
                        ->where('rol_id', '=', $rol)
                        ->where('state', '=', '1')
                        ->get();
    }
 
    return view('admin.reports.scoreTable', compact(['roles', 'users', 'rolGet']));
}
 
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar