Php 我应该使用哪种雄辩的关系?

Php 我应该使用哪种雄辩的关系?,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个表格“单词”和一个表格“类别”。以字母命名的每个类别。我需要列出所有类别,并在每个类别下面显示属于该类别的单词。一个词不能属于许多类别,同时一个类别可以有许多词。 我应该使用哪种关系来实现这一点?这很容易,而且你自己也这么说了,你猜到了: 一个词属于一个范畴,而一个范畴有许多词 你需要一份工作 这意味着单词只能有一个类别。如果您需要Word具有多个类别,则可以使用多对多关系 要回答您的评论,您可以执行以下操作以列出特定类别中所有单词的名称: @foreach$category->word

我有一个表格“单词”和一个表格“类别”。以字母命名的每个类别。我需要列出所有类别,并在每个类别下面显示属于该类别的单词。一个词不能属于许多类别,同时一个类别可以有许多词。
我应该使用哪种关系来实现这一点?

这很容易,而且你自己也这么说了,你猜到了:

一个词属于一个范畴,而一个范畴有许多词

你需要一份工作

这意味着单词只能有一个类别。如果您需要Word具有多个类别,则可以使用多对多关系

要回答您的评论,您可以执行以下操作以列出特定类别中所有单词的名称:

@foreach$category->words as$word {{$word->name} @endforeach
正如LobsterBaz指出的,您将使用一对多关系。例如,对于您的类别模型

class Category extends Model
{
    public function words()
    {
        return $this->hasMany('App\Word'); 
        // A category can have many words associated with it
    }
}
知道了这一点,我们可以访问给定类别的所有单词,例如,ID为1的类别

 Category::find(1)->words()->get();
Word::find(1)->category()->get();
我们也可以定义这种关系的倒数

class Word extends Model
{
    public function category()
    {
        return $this->belongsTo('App\Category'); 
        // A word belongs to a category
    }
}
知道了这一点,我们可以访问给定单词的类别,例如,ID为1的单词

 Category::find(1)->words()->get();
Word::find(1)->category()->get();

使用这种关系会发生以下错误:此集合实例上不存在属性[name]。触发该错误的代码:{{$category->words->name}我知道它失败了,因为上面的代码返回了一个集合。{{$category->words->get0->name}工作正常。但那不是我想要的need@WaldemarKarasik是的,因为$category->words返回许多单词,但您试图访问集合中单个对象的属性->名称。您不能在多个对象的集合上访问->名称,您需要在Word类型的单个对象上调用它。@WaldemarKarasik我编辑了我的答案,向您展示了如何从一个词集合中列出所有名称。那么我该如何做呢?