¿Hay alguna forma de usar variables en elocuente Ejemplo:
public function showLessons($skill) { $user = (\App\User::where('id', Auth::user()->getId())->first()); $type = $user->type; if ($type === "student") { $bs = ($user->student_bronze_ . $skill); $ss = ($user->student_silver_ . $skill); $gs = ($user->student_gold_ . $skill); } elseif ($type === "school") { $bs = ($user->school_bronze_ . $skill); $ss = ($user->school_silver_ . $skill); $gs = ($user->school_gold_ . $skill); }; return view('pages.lessons', compact("bs", "ss", "gs")); }Estoy tratando de verificar si el nivel del usuario es igual o superior a la identificación de la lección
Creo que su pregunta principal aquí es: ¿Puede usar una variable como nombre de atributo en un modelo laravel Eloquent?
La respuesta es sí, lo envuelves entre llaves {}
$user->{$type.'_'.$medal.'_'.$skill};Si mueve parte de su código al modelo de usuario, su controlador se vuelve un poco más ordenado.
// User.php public function skill($medal, $skill) { $type = $this->type; return $this->{$type.'_'.$medal.'_'.$skill}; }entonces su controlador se vuelve más limpio:
public function showLessons($skill) { $user = Auth::user(); $bs = $user->skill('bronze', $skill); $ss = $user->skill('silver', $skill); $gs = $user->skill('gold', $skill); return view('pages.lessons', compact("bs", "ss", "gs")); }