我有一种关系,我正在努力工作,似乎是在错误的专栏中搜索。我有一个模型,用户词,应该与它相关联的单词。我希望它使用userword表中的word_id列来搜索单词表中id的单词,但是它似乎是使用userword行的id来搜索单词。我想也许如果我告诉它在hasOne()的第三个参数中使用哪个列它可以工作,但无济于事。有问题的代码是:
public function word(){
return $this->hasOne('Word', 'id', 'word_id');
}
任何帮助或想法将不胜感激!如果您需要更多信息,请告诉我,我会在这里更新!非常感谢!
答案 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
应该是表名,但是您使用word
而Model
应该使用单数名称,例如,Word
表格为words
,因此您在这里使用了不同的名称汇率,因此请使用protected $table = 'word'
模型中Word
和Userwords
模型中的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。
的更多信息