【发布时间】:2019-08-06 13:59:18
【问题描述】:
我有各种父/子关系,向下钻取了几个级别。我想知道的是是否可以做这样的事情:
$student = Student::find(1);
$student->bursaries()->enrolments()->courses()->where('course','LIKE','%B%');
(最终目标是选择类似于“%B%”的课程),或者我是否必须改用带有连接的数据库查询构建器?
模型/关系
学生:
public function bursaries() {
return $this->hasMany('App\StudentBursary');
}
学生助学金:
public function enrolments() {
return $this->hasMany('App\StudentBursaryEnrolment');
}
【问题讨论】:
-
你试一试了吗?)它对我有用,深度为 2 级。
-
使用 php artisan tinker,它失败了 - 但我不知道它是否是另一个问题和/或特定于修补程序:>>> $student->bursaries()->enrolments()->courses() ->where('课程','LIKE','%B%'); BadMethodCallException 并带有消息“调用未定义的方法 Illuminate/Database/Eloquent/Relations/HasMany::enrolments()”
-
您在 Tinker 中遇到了哪些错误?
-
你能用这些关系方法展示所有模型吗?顺便说一句,如果您的数据库不是那么大,请尝试在数据库级别上获取您需要的内容。无论如何可能会更快。
-
阅读
Has Many Through关系 laravel 文档。我想可以帮到你。