我有一个拥有阿凡达和军械库的用户。用户只能拥有一个阿凡达(目前),军械库可以拥有任意数量的护甲。一切都很好。然而,阿凡达需要有头部,胸部,手臂等,所以我在头像表上创建了head_id,chest_id等。基本上这些代表了他们在每个位置穿着的当前作品。军械库是他们可以选择的作品。
所以在我的头像模型中我有:
public function head()
{
return $this->hasOne('Armor', 'id', 'head_id')
}
哪个工作得很好并且还给我一件盔甲。当我发布数据并尝试更改那件盔甲时,问题就出现了。我所做的是:
$this->head_id = $newHeadID;
哪个实际上改变了head_id,但是如果我然后执行$ this-> head(),它仍会返回旧的 head 。我已经尝试过 $ this-> save()和 $ this-> push(),但它仍然没有更新它立刻。似乎工作的唯一方法是完全"重新查询"像这样:
$head = Armor::where('id', $this->head_id)->first();
我很确定我错过了不做更新,刷新等的事情。有什么想法吗?