[英]How to use variables as attribute name in Laravel Eloquent
無論如何在 eloquent 示例中使用變量:
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"));
}
我正在嘗試檢查用戶的級別是否與課程的 ID 相同或更高
我認為您的主要問題是:您能否在 laravel Eloquent model 上使用變量作為屬性名稱。
答案是肯定的,你用花括號把它包起來{}
$user->{$type.'_'.$medal.'_'.$skill};
如果您將一些代碼移動到用戶 Model 您的 controller 會變得更整潔一些。
// User.php
public function skill($medal, $skill) {
$type = $this->type;
return $this->{$type.'_'.$medal.'_'.$skill};
}
然后你的 Controller 變得更干凈:
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"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.