Laravel 4:hasOne似乎使用了错误的列

时间:2014-03-07 21:04:24

标签: orm laravel-4 relational-database

我有一种我认为应该工作的关系,但事实并非如此。我有两个表,用户词和单词。每个用户单词都有一个与之关联的单词,但是当我查询它时,它使用了错误的列。在我的用户名表中,我有一个word_id列,我希望将其用作与word表中的id匹配的列。所以在用户词模型中,我将关系定义为:

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

但问题是,不是使用userwords表中的word_id搜索单词表,而是使用userwords表中的id。关于我做错了什么的任何想法?我仍然不完全理解关系所以我打赌我做的事情很傻。无论如何,如果您需要更多信息或澄清,请告诉我!

1 个答案:

答案 0 :(得分:0)

我可能错了,但我无法在该代码中找到您调用用户词的地方。这可能是你的问题吗?

就像它说here

class Person extends Eloquent {
    public function phone()
    {
        return $this->hasOne('Phone', 'foreign_key', 'local_key');
    }
}

我相信你的意思是Userword(上面的人)有一个用户(上面的电话)所以你可能想要这样的代码:

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

(或无论你的桌子叫什么)

或其他方式:

public function user(){
    return $this->belongsTo('userword', 'word_id', 'id');
}

我还没有对此进行测试,但我希望这会有所帮助!