Laravel Model的setRelation
2019-03-02 本文已影响0人
ankyliu
遇到一个需求,需要在模型外给模型加个字段,而不是在模型中定义(主要是用到了 Repository ,并且同时用到了缓存,直接用模型缓存会连同关联关系一起缓存,如果这时关联关系更新了,数据就不同步了)
起初最暴力方法直接
$video->user = $user_repository->getUser($user_id);
可以当video附加加 User,也可以拿到数据,
但当你需要对 Video 做 Save()时,就会发现,他把user当做字段来 Save,就报错了。
这个时候,setRelation用处就来了
$video->user = $user_repository->getUser($user_id);
这句换成
# 设置关联关系
$video->setRelation('user', $user_repository->getUser($user_id));
完美解决。