如何在laravel的索引中获得3个表数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel的索引中获得3个表数据?相关的知识,希望对你有一定的参考价值。

我有3个表学校,school_Details,评级

**学校**

  • ID
  • 那么
  • 电话
  • 学校
  • 电子邮件
  • 状态

学校细节:

-ID

  • 学校ID
  • 图片
  • 状态

评级:

-ID

  • 学校ID
  • RATING_VALUE
  • 状态

评级和学校详细信息对于一个school_id只有一行。

现在,我如何从schoolController中获取索引中所有3个表的所有详细信息

答案

使用Laravel关系。

在学校模型中添加此项。

public function schoolDetails()
{
    return $this->hasOne('AppSchoolDetails');
}

public function ratings()
{
    return $this->hasOne('AppRatings');
}

在学校详情模型中添加此项。

public function school()
{
    return $this->belongsTo('AppSchool');
}

在评级模型中添加此项。

public function school()
{
    return $this->belongsTo('AppSchool');
}

在学校控制器

public function index()
{
   $schools = Schools::with('schoolDetails')
                     ->with(ratings)
                     ->get();
   return $schools;
}

你能试试吗

另一答案

这是一个非常广泛的问题。这将有助于展示你到目前为止所尝试的内容。答案是创建从学校到详细信息和评级的one to many关系。

然后从索引方法中调用基础学校对象中的那些关系。您甚至可以通过eager load从数据库中进行简单而干净的拉动。

从您的学校模型中澄清:

public function ratings()
{
    return $this->hasMany('AppRating');
}

你学校的细节也一样。然后,在您的索引方法中急切加载:

$schools= AppSchool::with(['ratings', 'details'])->get();

那么你的学校对象就是你所要求的:

$school->ratings->status

等等

以上是关于如何在laravel的索引中获得3个表数据?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 - 如何在 3 个表之间建立关系?

从3个表中检索数据如何使用Laravel中的第一个表从最后一个表中检索数据

Laravel Eloquent ORM - 获取第一和第三表数据

如何在 Laravel 中将数据从 1 个视图插入到 2 个表中

如何使用 eloquent hasmanythrough 或 hasonethrough 在 laravel 中加入 3 个表

如何将 excel 索引匹配转换为 Access - 加入 4 个表