Laravel关系一对一,一对多

时间:2018-02-03 04:50:30

标签: json laravel scope relationship

我有三个模特班,学生和学生信息。班级和学生处于一对多的关系中,Sudents和studentinfo处于一对一的关系中。

让某些班级的学生获得数组中的数据列表。

从阵列中为每个学生从studentinfo获取数据的最佳方法是什么?

我试图以json格式获取此数据。

1 个答案:

答案 0 :(得分:1)

您可以在模型上设置如下关系,重要的是hasManythrough关系:

// Class.php
public function students() {
    return $this->hasMany(Student::class);
}

public function studentInfo()
{
    return $this->hasManyThrough(StudentInfo::class, Student::class);
}


// Student.php
public function studentInfo() {
    return $this->hasOne(StudentInfo::class);
}

public function classes() {
    return $this->belongsToMany(Class::class);
}

// StudentInfo.php
public function student() {
    return $this->belongsTo(Student::class);
}
  

...您可以将模型或集合强制转换为字符串   将自动调用模型或集合上的toJson方法:

$json = (string)$class->studentInfo;

Laravel Docs: Serialization