我有一个[[考试,问题和标签(Spatie / laravel-tags软件包)模型。
Exam
由许多Questions
(很多对很多)组成,而Question
有许多Tags
(MorphToMany)。 我想在Exam模型上有一种方法,可以通过其相关问题获取Exam的所有标签,以便$exams→tags()
从属于该考试的相关问题中返回所有标签。
任何人都可以指出我要实现这一目标的最佳课程是什么?
// Exam Model
public function tags()
{
return $this->questions->map(function($q){
return $q->tags;
})->collapse();
}
return Exam::with('questions.tags')->get();
如果您想要标签的某些条件,您可以这样做[>return Exam::with(['questions.tags'=> function($query){
$query->where('..','..')
}])->get();
[如果您想要像您所说的那样在模型中放入一个适当的函数,只需将逻辑放入一个函数中即可。Exam.php
public function getAllTags()
{
return $this->with(['questions.tags'=> function($query){
$query->select('..');
}])->get();
}
// This will just give you what you need
让我知道这是否有帮助