2014-01-23 2 views
0

Я не уверен, что сформулировал вопрос хорошо. Позволь мне объяснить.Как получить не связанную модель в Laravel?

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

Мои соответствующие таблицы БД, как что

Word 
{id=1} 

Lang 
{id=1, lang = fr} 
{id =2 , lang = en}) 

WordLang 
{id=1, word_id=1, lang_id=1, name=chat} 
{id=2, word_id=1, lang_id=2, name=cat} 

Мое слово модель как

модели/Word.php

public function wordlang() 
{ 
    $this->hasMany('WordLang'); 
} 

public function notword() 
{ 
    return Word::where('id','<>','$id')->orderBy(DB::raw('RAND()'))->first(); 
} 

Так на мой взгляд, у меня есть

question: {{$word->wordlang()->where('lang_id','1')->first()->name}} 

Возможные ответы на английском языке:

- {{$word->wordlang()->where('lang_id','2')->first()->name}} correct one 
- {{$word->notword()->wordlang()->where('lang_id','2')->first()->name}} 
- {{$word->notword()->wordlang()->where('lang_id','2')->first()->name}} 
- {{$word->notword()->wordlang()->where('lang_id','2')->first()->name}} 

Этот вид работ, но $ идентификатор слова не передается функции notword в классе слов, а не любое слово выбрано в том числе правильный перевод.

+0

не notword() принимает параметр $ ID? – cecilozaur

+0

Спасибо, celilozaur - это было – user681365

ответ

0

Хорошо, это было, вероятно, тривиально для некоторых, но я просто не мог его увидеть.

в модели слова

public function notword($id) 

    { 
     return Word::where('id','<>',$id)->orderBy(DB::raw('RAND()'))->first(); 
    } 

ввиду

- {{$word->wordlang()->where('lang_id','2')->first()->name}} correct one 
- {{$word->notword($word->id)->wordlang()->where('lang_id','2')->first()->name}} 
- {{$word->notword($word->id)->wordlang()->where('lang_id','2')->first()->name}} 
- {{$word->notword($word->id)->wordlang()->where('lang_id','2')->first()->name}} 

Еще раз спасибо cecilozaur

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