2016-04-23 4 views
0

Это мои схемы ТаблицыСоздание простой викторины логики в Laravel

Schema::create('question', function(Blueprint $table) { 
      $table->increments('id'); 
      $table->text('title'); 
      $table->string('hint')->nullable(); 
      $table->text('explanation')->nullable(); 
      $table->string('referencematerial')->nullable(); 
      $table->string('imagepath')->nullable(); 
      $table->boolean('published')->default(1); 
      $table->timestamps(); 
      $table->softDeletes(); 
     }); 

Schema::create('answers', function(Blueprint $table) { 
      $table->increments('id'); 
      $table->string('text'); 
      $table->boolean('iscorrect')->nullable(); 
      $table->timestamps(); 
     }); 

Вот мои классы для вопроса и ответа.

class Answer extends Model 
{ 
    protected $table = 'answer'; 

    public $timestamps = true; 

    protected $fillable = array('text', 'iscorrect'); 

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

} 

class Question extends Model 
{ 
    protected $table = 'question'; 
    public $timestamps = true; 

    protected $dates = ['deleted_at']; 
    protected $fillable = array('title', 'hint', 'explanation', 'referencematerial', 'imagepath', 'published'); 


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

} 

Мои QuizController

public function index() 
{ 
    $questions = Question::with('answers')->get(); 
    return $questions; 
} 

BadMethodCallException in Builder.php line 2251: 
Call to undefined method Illuminate\Database\Query\Builder::answers() 

Я пытался загрузить вопросы и ответы на этой странице. Он продолжает давать мне ошибку построителя запросов. Пожалуйста, не стесняйтесь звонить в него.

ответ

1

Ошибка в основном говорит вам, что отношения, которые вы назвали (answers), не существуют.

В вашей модели вы назвали отношение Answer(), но указали его как answers в вашем запросе.

Вам необходимо либо обновить отношения в вашей модели answers() или изменить запрос на $questions = Question::with('Answer')->get();

Update

Ваши отношения не называя модель правильно, он должен быть:

public function Answer() 
    { 
     return $this->hasMany('App\Answer'); 
    } 
+0

Я обновил эту ошибку. FatalThrowableError в Model.php line 869: Неустранимая ошибка: Class 'Answer' не найден Я назвал использование App \ Models \ Answer; сверху тоже. – manshu

+0

@manshu Ах, это связано с вашими отношениями, которые неправильно называют модель. См. Мое обновление, вам просто нужно правильно ссылаться на модель 'Answer'. – James

+0

SQLSTATE [42S02]: Базовая таблица или просмотр не найдены: 1146 Таблица« myapp.answer »не существует (SQL: select * from' answer' где 'answer'.'question_id' в (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, – manshu

Смежные вопросы