我有三个如下表。
posts
_id - integer
name - string
sentences
_id - integer
post_id - integer
name - string
translations (word by word)
_id - integer
post_id - integer
sentence_id - integer
word_id - integer
name - string
在PostController.php
中,我试图获取如下数据
return Post::with(['sentences', 'sentences.translations'])->limit(2)->get();
我在post.php
模型中具有以下功能
protected $primaryKey = '_id';
public function sentences()
{
return $this->hasMany('App\Model\sentence', 'post_id','_id');
}
我在sentences.php
模型中具有以下功能
protected $primaryKey = '_id';
public function translations()
{
return $this->hasMany('App\Model\translation', 'sentence_id','_id');
}
我想获取文章以及句子和翻译。
我可以获取帖子和句子,但是在尝试获取翻译时遇到了问题。
我得到translations
与sentence_id
表中的id
匹配的所有sentences
,但是post_id
与当前帖子{{ id
表中的1}}。
答案 0 :(得分:1)
如果您将主键命名为id
以外的其他名称,则需要在每个模型上设置主键名称:
class Post extends Model {
protected $primaryKey = '_id';
}
还要将您的关系与正确的名字匹配:
return $this->hasMany(Sentence::class, 'post_id','_id');