我不确定我是否已经很好地提出了这个问题。让我解释一下。
它适用于带有测验的语言应用程序。我想向用户提供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}}
这种方法有效,但单词的$ id不会传递给单词类中的notword函数,也不会选择任何单词,包括正确的翻译。
答案 0 :(得分: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