Php 同一表中的Laravel模型关系

Php 同一表中的Laravel模型关系,php,mysql,laravel-5,Php,Mysql,Laravel 5,我正在从事一个Laravel5.7项目,在这个项目中,我有三个表格单词,同义词和反义词 words表有两列id和word 同义词有三列id、单词id和同义词id 反义词有三列id、单词id和反义词id 我将所有单词及其同义词和反义词存储在单词表中,并在相应的表中引用同义词和反义词 Word.php 我在质疑这样的同义词:- $synonyms = Word::find(1)->synonyms; 上面的查询提供了同义词表中的所有同义词及其id,但我的实际同义词存储在Words表中 如何从

我正在从事一个Laravel5.7项目,在这个项目中,我有三个表格单词,同义词和反义词

words表有两列id和word 同义词有三列id、单词id和同义词id 反义词有三列id、单词id和反义词id 我将所有单词及其同义词和反义词存储在单词表中,并在相应的表中引用同义词和反义词

Word.php

我在质疑这样的同义词:-

$synonyms = Word::find(1)->synonyms;
上面的查询提供了同义词表中的所有同义词及其id,但我的实际同义词存储在Words表中

如何从单词表中获取同义词

要使用这个,同义词类应该和单词有如下定义的关系

class Synonym extends Eloquent {

    public function word()
    {
        return $this->belongsTo('App\Word');
    }

}
阅读相同的场景以获得更多理解。

我用圆点解决了这个问题。在查询中

Word.php

Synonym.php

WordController.php

注意点。在同义词和单词之间

words.blade.php


请给我看一下你的同义词模型内容。是的,我有这样的同义词和反义词模型。但问题是同义词和反义词表并没有存储实际的单词,实际的同义词在单词表中。同义词表只有word_id字段,它引用回word表。$synonymsWithWord=word::find1->synonyms->with'word';此查询提供同义词表中的单词_id,但不是实际单词。我想从单词表中得到实际单词。同义词和反义词模式应该和答案中建议的单词模式有关系。然后在查询中与函数一起使用。@Amandepsingh它工作吗?或者你面临的任何问题。让我知道。我会解决的。非常感谢你给我这个主意。我用嵌套关系解决了它。
$synonymsWithWord = Word::find(1)->synonyms()->with('word')->get();
class Synonym extends Eloquent {

    public function word()
    {
        return $this->belongsTo('App\Word');
    }

}
class Word extends Model
{
    public function antonyms()
    {
        return $this->hasMany(Antonym::class);
    }

    public function synonyms()
    {
        return $this->hasMany(Synonym::class);
    }
}
class Synonym extends Model
{
    public function word()
    {
        return $this->belongsTo(Word::class);
    }
}
class WordController extends Controller
{
    public function index()
    {
        $words = Word::with(['synonyms.word'])->get();
        return view('words', compact('words') );
    }   
}
@foreach($words as $word)
    <h4>{{ $word->word }}</h4>
    @foreach($word->synonyms as $s)
        {{ $s->id }} - {{  $s->word->word }}
        <br>
    @endforeach
@endforeach