发布于 1年前

thinkphp 一对多关联查询时 同一条数据会查询出来好几条

如果在一对多关联查询中,同一条数据重复出现多次,可能是由于关联表中存在多条满足条件的子数据导致的。这是正常的行为,因为一对多关联查询会将主表中每一条记录与关联表中满足条件的子数据进行匹配。

如果您只想获取每个主表记录的唯一一条关联数据,可以使用distinct方法来去除重复的结果。以下是一个示例代码:

$result = Db::table('表a')
    ->alias('a')
    ->join('表b b', 'a.id = b.a_id')
    ->where('a.id', '>', 100)
    ->where('b.status', 1)
    ->distinct(true)
    ->select();

通过在查询构建器中添加distinct(true),可以确保结果中每个主表记录只出现一次。

请注意,如果关联表中有多条满足条件的子数据,使用distinct方法可能会导致某些数据被忽略。如果您需要获取所有满足条件的子数据,可以继续使用原始的查询结果。

©2020 edoou.com   京ICP备16001874号-3