回归关系属于众多

时间:2016-01-08 11:33:29

标签: laravel laravel-5.2

我的考试属于许多问题。

有些问题有父母提问。

现在我需要一个考试中的函数来回复我所有的父问题。^

我得到了这段代码

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();

1 个答案:

答案 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;

我相信这不是最好的,但现在是最好的。