我想通过用户ID获得用户的类名。当我输入用户ID时,我想获取类名。我有三个表,例如users
表,classes
表和class_users
表。 class_users
表是从两个users
表和classes
表中诞生的。
users
表具有一个id, name, email, password
。classes
表具有一个id, class_code, class_name
。class_users
表具有一个id, class_id, user_id
这个问题与雄辩的关系有关。
谢谢您的帮助。
我的路线:
Route::get('/find_classes/{id}','StudentController@find_classes');
我的控制器功能:
public function find_classes($id)
{
$users = User::find($id);
foreach($users->classes as $class)
{
echo $class->name . '<br';
dd($class);
}
}
我的用户模型:
public function classes()
{
return $this->belongsTo('App\Classes','class_users','user_id','class_id');
}
答案 0 :(得分:0)
看起来您在用户模型上建立的关系可能不正确。您进行了一对多设置,但您的数据库已设置为可以处理多对多。建议您更改您的用户模型关系:
public function classes()
{
return $this->belongsToMany('App\Classes');
}
请注意,您可能需要在该关系上命名FK,因为我看到表上有class_id,但实际的类名为“ Classes”。检查您的关系,以确保这在FK上是明确的,而FK并未完全遵循Laravel约定。
有了这种关系,您的foreach循环应该可以工作了。正如mare96所指出的,这是提高效率的一个好主意,当您查询时,急于在$ users集合上加载类:
$users = User::with('classes')->find($id);