Laravel SoftDeletes仍然返回联接中使用的记录,即使已删除的\u at不为空?

Laravel SoftDeletes仍然返回联接中使用的记录,即使已删除的\u at不为空?,laravel,eloquent,Laravel,Eloquent,我正在查询一个模型,该模型中的联接已在NOTNULL处删除了_,但它们仍然返回结果 例如:poststable连接post\u likestable,两者都带有软删除功能 Posts::join( 'post_likes', 'post_id', '=', 'id' )->get(); 我目前的解决方法是手动检查连接,显然我更喜欢自动检查 Posts::join( 'post_likes', function ($join) use ($model)

我正在查询一个模型,该模型中的联接已在NOTNULL处删除了_,但它们仍然返回结果

例如:
posts
table连接
post\u likes
table,两者都带有软删除功能

Posts::join(
   'post_likes',
   'post_id',
   '=',
   'id'
)->get();

我目前的解决方法是手动检查连接,显然我更喜欢自动检查

Posts::join(
   'post_likes',
   function ($join) use ($model) {
      $join->on(
         'post_id',
         '=',
         'id'
      );

      if ($model->hasColumn('deleted_at')) {
         $join->whereNull('post_likes.deleted_at');
      }
   }
);

如果您有一个
Like
模型和
Like
关系,则不需要加入。你为什么不使用它们?您没有从
post\u likes
查询任何列,因此这里似乎没有必要使用
join
。@Timleis我简化了我的问题,以显示我面临的基本问题。我的代码更通用,它会根据url自动生成查询。加入往往会绕过许多Eloquent的内置功能。你应该利用人际关系,这能回答你的问题吗?