首页 > 解决方案 > 如何编写正确的查询以获取未删除的行?

问题描述

我有users桌子,我用softDeletes()在我的桌子上。我也有candidates表,其中有表的外键(user_idusers

一般来说,我如何才能获得未删除用户的候选人?

这是我获取未删除用户的候选人的代码:

$candidates = Candidate::all();
$activeCandidates = [];
foreach ($candidates as $candidate) {
    if($candidate->user) {
        $activeCandidates[] = $candidate;
    }
}

可以在不使用子查询循环的情况下解决我的问题吗?

标签: phplaraveleloquent

解决方案


has()是根据关系过滤选择模型。因此,它的行为与正常的 WHERE 条件非常相似。如果您只是使用has('relation')这意味着您只想获取在此关系中至少具有一个相关模型的模型。

$candidates = Candidate::has('user')->get();

推荐阅读