我如何在Laravel的索引中获取3个表数据?

时间:2019-02-01 02:18:38

标签: laravel laravel-5 laravel-5.2 laravel-5.1

我有3桌学校,school_Details,评分

**学校**

  • id

  • 名称

  • 电话

  • 学校

  • 电子邮件

  • 状态

学校详细信息

-id

  • school_id

  • 图片

  • 状态

评分

-id

  • school_id
  • rating_value
  • 状态

两个评分和学校详细信息的一个school_id都只有一行。

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

2 个答案:

答案 0 :(得分:2)

使用Laravel关系。

在“学校模型”中添加它。

public function schoolDetails()
{
    return $this->hasOne('App\SchoolDetails');
}

public function ratings()
{
    return $this->hasOne('App\Ratings');
}

在“学校详细信息模型”中添加它。

public function school()
{
    return $this->belongsTo('App\School');
}

在“评分模型”中添加此内容。

public function school()
{
    return $this->belongsTo('App\School');
}

在学校负责人

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

您可以尝试一下吗

答案 1 :(得分:0)

这是一个相当广泛的问题。这将有助于显示您到目前为止所做的尝试。答案是要建立从学校到详细信息和等级的one to many关系。

然后从索引方法调用基础学校对象内的那些关系。您甚至可以eager load从数据库中进行一次简单干净的提取。

根据您的学校模型进行说明:

1. 857019877
2. 1923929452
3. 685483091    
1. 857019877  <--- Repeats
2. 1923929452
3. 685483091
1. 857019877
2. 1923929452
3. 685483091
1. 2033103372 <--- Phew! It's a new number
2. 728933312
3. 2037485757

关于您学校的详细信息也是如此。然后,希望加载索引方法:

public function ratings()
{
    return $this->hasMany('App\Rating');
}

然后您的学校物件满足了您的所有要求:

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