Laravel 返回关系有一个属于多个
我有很多问题的考试 有些问题有一个家长问题 现在我需要一个函数在考试中返回我所有的家长问题^ 我得到了这段代码Laravel 返回关系有一个属于多个,laravel,laravel-5.2,Laravel,Laravel 5.2,我有很多问题的考试 有些问题有一个家长问题 现在我需要一个函数在考试中返回我所有的家长问题^ 我得到了这段代码 public function getQuestionParentsAttribute() { $array = []; foreach($this->questions->load('parent') as $q) { if($q->parent !== null) $array[] = $q->parent;
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()
我是这样做的,所以它不是每次使用都附加的:
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;
我确信这不是最好的,但现在是最好的。你能在考试和问题之间以及问题和他们的父母之间粘贴关系定义吗?添加了关系。