Создание теста приложений с использованием Laravel 7 и Mysql

#php #laravel

#php #laravel

Вопрос:

я пытаюсь создать простое приложение для викторины с помощью Laravel и Mysql.

идея в том, что я застрял в отношениях между вопросами / вариантами.

сначала я создаю таблицу под названием «quiz»

 ID  name
1   Brazil
2   EUA
3   Japan
  

таблица под названием «вопросы»

 ID  quiz_id name
1   1   President ?
2   1   Food?
3   1   Music?
4   1   Maiority?
  

и таблица под названием «параметры»

 ID  question_id name
1   1   lula    
2   1   bolsonaro   
3   2   rice
4   2   beans
5   3   samba
6   3   rock    
7   4   black
8   4   white
  

как и на изображении ниже, я получаю вопросы, связанные с викториной. моя функция в моем HomeController выглядит следующим образом .

 public function index(){


    $quiz = Quiz::where('id',1)->with('questions')->get();
    $array = array('quiz' =>$quiz);




        return $array;

}
  

и моя модель викторины имеет эту взаимосвязь

 public function questions(){
    return $this->hasMany('Appquizquestion', 'quiz_id');
}
  

но я хочу связать вопросы с вариантами.

я думаю, что это должен быть еще один вложенный объект внутри вопросов. как тридцать уровней.

Пример :

варианты вопросов для теста.

поскольку я хочу вызвать это в своем шаблоне блейда, на самом деле я вызываю этот способ

 <body>


    @foreach($quiz as $item)

        <h1>{{$item->name}}</h1>

       @foreach($item->questions as $quest)
       <p>{{$quest->question}}</p>
        @endforeach
         @endforeach





</body>
  

это возвращает меня :

Бразилия

Президент ?

Еда ?

Музыка ?

Старшинство?

введите описание изображения здесь

Ответ №1:

Я думаю, вы ищете запрос вложенных отношений.

Я предполагаю, что вы уже настроили отношения вопросы-параметры. Вот упрощенный запрос:

 Quiz::with(['questions', 'questions.options'])->get();
  

или проще (кредиты @lagbox) :

 Quiz::with('questions.options')->get();
  

Комментарии:

1. Сработало как шарм, у меня нет отношений между вариантами вопросов, но я создал и, используя вашу логику, ее работу. я попытаюсь найти логику, стоящую за этим. спасибо моему другу.