【发布时间】:2021-03-07 11:27:18
【问题描述】:
我目前正在尝试在多个表之间建立关系。
教育机构
id institution_name country city
1 ABC College UK London
用户教育
id user_id institution_id grade year
1 1 1 3.2 2010
关系是
class UserEducation extends Model {
public function educationInstitution()
{
return $this->hasMany(EducationInstitution::class,'institution_id');
}
}
class EducationInstitution extends Model{
public function userEducation()
{
return $this->hasMany(UserEducation::class);
}
}
最后在控制器中:
class UserEducationController extends Controller
{
public function getUserEducation()
{
$userEducation = UserEducation::with('education_institutions')
->where('user_id',auth()->user()->id)
->orderBy('created_at', 'desc')
->get();
return response()->json([
'userEducation' => $userEducation
]);
}
}
它给出以下错误:
调用模型 [App\Models\UserEducation] 上的未定义关系 [education_institutions]。
我期待这样的回应:
{
"userEducation": [
{
"id": 1,
"user_id": 1,
"institution_id": 1,
"grade": "3.49",
"institution_name": "ABC College"
"country":"UK",
"city":"London"
}
}
如何解决?
【问题讨论】:
-
试着给你的关系起一个名字 $this->hasMany(EducationInstitution::class,'institution_id')->as("education_institutions");
-
如果您将您的关系方法命名为
educationInstitution,为什么要在中间加上下划线来调用它。这样做::with('educationInstitution') -
我认为你的关系在 UserEducation 模型上是错误的
-
请告诉我这些表之间的关系逻辑。我想我可以帮助你..
标签: laravel eloquent laravel-7