Как я могу получить 3 табличных данных в индексе в laravel? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть 3 таблицы школы, school_Details, рейтинги

** Школы **

  • id

  • имя

  • телефон

  • школа

  • электронная почта

  • статус

Сведения о школе :

-id

  • school_id

  • изображение

  • статус

рейтинги :

-id

  • school_id
  • rating_value
  • status

и в рейтинге, и в информации о школе есть только один ряд для одного school_id.

Теперь какМогу ли я получить все детали из всех 3 таблиц в индексе из schoolController

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Это довольно широкий вопрос.Это поможет показать, что вы пробовали до сих пор.Ответ заключается в создании отношений один-ко-многим от школ к деталям и рейтингам.

И затем вызовите эти отношения в базовом школьном объекте из вашего индексного метода.Вы можете даже нетерпеливо загрузить их для одного простого и чистого извлечения из базы данных.

Чтобы уточнить, из вашей школьной модели :

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

И то же самое для деталей вашей школы.Затем, чтобы начать загружать ваш индексный метод:

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

Тогда в вашем школьном объекте есть все, о чем вы просили:

$school->ratings->status

и т. Д.

0 голосов
/ 01 февраля 2019

Используйте Laravel Relationship.

В Школе Модель добавьте это.

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;
}

Можете ли вы попробовать это,

...