我的考试属于许多问题。
有些问题有父母提问。
现在我需要一个考试中的函数来回复我所有的父问题。^
我得到了这段代码
public function getQuestionParentsAttribute() {
$array = [];
foreach($this->questions->load('parent') as $q) {
if($q->parent !== null)
$array[] = $q->parent;
}
return $array;
}
class Exam extends Model {
public function questions() {
return $this->belongsToMany(Question::class);
}
}
class Question extends Model {
public function parent() {
return $this->hasOne(Question::class, 'id', 'parent_id');
}
}
但我希望将它作为关系,而不是作为属性,所以我可以称之为
$exam->with('parentQuestion')->get()
;
答案 0 :(得分:0)
我是这样做的,所以每次使用都不会附加:
class Exam extends Model {
public function setParents() {
$array = $this->questions()->where('parent_id', '>', 0)->with('parent')->get();
$this->parents = array_pluck($array, 'parent');
}
}
用法:
$exam = Exam::find($id);
$exam->setParents();
return $exam;
我相信这不是最好的,但现在是最好的。