在使用ThinkPHP的模型关联和软删除功能时,我们可能会遇到一些特殊的需求。例如在某些情况下,我们希望关联数据即使已经被软删除,也需要查询出来。此时如果直接使用belongsTo
之类的关联方法,查询出来的数据默认过滤了软删除数据。
例如,在获取一篇文章的发布者时,如果对应的用户已被删除,那么关联方法就无法获取对应的发布者信息。如果不想让软删除的用户影响关联结果,那么可以在模型关联中添加removeOption('soft_delete')
方法:
public function user()
{
return $this->belongsTo(User::class, 'uid')->removeOption('soft_delete');
}
如此一来,即使用户被软删除了,也可以通过$article->user
来获取到文章发布者的信息,包括被软删除的用户。保证在查看文章数据时,不会因为对应发布的用户被软删除而丢失发布者的信息。
发表回复