按模型优化Laravel中的查询

t30tvxxf  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(138)

我有四个表,分别命名为practicesectionbookgrade,其流程是每一个练习都与补丁的一个章节相关一本书,每一个章节对应一本补丁书,每一本书对应一个学习水平。
例如,解维恩图的练习是年级数学第一章的一部分。
我想有一个查询,有与特定年级相关的做法。
我自己在Laravel上运行了这个查询:

$grade = 9;  //Example
$practice = DB::table('practices')
    ->select('practices.id')
    ->where('teacher_id', $teacher->id)
    ->where('code', $practiceCode)
    ->join('sections', 'practices.section_id', '=', 'sections.id')
    ->join('books', 'sections.book_id', '=', 'books.id')
    ->where('books.grade_id', $grade)
    ->first();

但是我没有通过这个查询得到一个对象,当我想把它发送到blade视图时,我必须把它转换成一个对象。

$practice_id = $practice->id ;
$practiceObject = Practice::find($practice_id);

但是如果可能的话我想用模型来实现这个查询。谢谢你的帮助。

6vl6ewon

6vl6ewon1#

我会这样做:
首先在模型中设置关系,然后我会尝试使用'with'和/或'whereHas'方法构建一些东西,如下所示:

$practice = Practices::where([
  'teacher_id', $teacher->id,
  'code', $practiceCode
 ])
 ->whereHas('sections', function ($query) {
   $query->where('practice_id ...')
 })
 ->with('relations_you_want'...)
 ->first()

如果您不知道如何操作,请查看here in the docs
希望对你有帮助!😉

相关问题