Laravel 4:使用错误的行执行查询的关系

时间:2014-03-07 23:26:41

标签: laravel-4 eloquent

我有一种关系,我正在努力工作,似乎是在错误的专栏中搜索。我有一个模型,用户词,应该与它相关联的单词。我希望它使用userword表中的word_id列来搜索单词表中id的单词,但是它似乎是使用userword行的id来搜索单词。我想也许如果我告诉它在hasOne()的第三个参数中使用哪个列它可以工作,但无济于事。有问题的代码是:

public function word(){
    return $this->hasOne('Word', 'id', 'word_id');
}

任何帮助或想法将不胜感激!如果您需要更多信息,请告诉我,我会在这里更新!非常感谢!

1 个答案:

答案 0 :(得分:0)

您的父表格为userword且相关子表格为word,在这种情况下,Userword模型应包含以下与word表格建立关系的方法:< / p>

class Userwords {

    protected $table = 'userword';

    public function word(){
        return $this->hasOne('Word', 'userword_id'); // use the foreign key here
    }

}

在这种情况下,您的word表应包含userword_id作为外键。因此,如果您有一个不同的外键定义的单词表,那么在userword_id的位置使用该外键。

还要记住,表格应该使用复数的单词名称,例如,words应该是表名,但是您使用wordModel应该使用单数名称,例如,Word表格为words,因此您在这里使用了不同的名称汇率,因此请使用protected $table = 'word'模型中WordUserwords模型中的protected $table = 'userword' class Userword { // change the table name in database (use userwords) protected $table = 'userwords'; public function word(){ return $this->hasOne('Word', 'userword_id'); // use the foreign key here } } 。所以,最后,它应该是这样的:

words

对于class Word { // change the table name in database (use words) protected $table = 'words'; public function userwords(){ return $this->belongsTo('Userword'); } } 表,它应该是:

{{1}}

阅读手册以获取有关Laravel Model Relationships

的更多信息