You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel hasCount查询仍返回无pingtree_entries关联模型的问题排查

解决Laravel中关联模型过滤问题

你当前的has方法仅确保Application模型存在至少一个符合条件的关联,但使用with加载关联时未对pingtree_group_entries做过滤,因此无关联pingtree_entries的条目仍会被包含。

要完全排除这类无效条目,需在关联加载时添加约束,修改后的代码如下:

/**
 * Display the specified resource.
 *
 * @return \Illuminate\Http\Response
 */
public function show(Company $company, Application $application)
{
    $app = Application::has('pingtree_group.pingtree_group_entries.pingtree.pingtree_entries')
        ->with([
            'modelable',
            'pingtree_group' => function ($query) {
                $query->with([
                    'pingtree_group_entries' => function ($q) {
                        // 仅保留关联pingtree存在pingtree_entries的条目
                        $q->whereHas('pingtree.pingtree_entries');
                        // 加载对应关联数据
                        $q->with(['pingtree.pingtree_entries']);
                    }
                ]);
            }
        ])
        ->where('id', 30)
        ->first();

    return new ApiSuccessResponse($app);
}

代码说明:

  • 外层has方法保留,确保当前Application确实存在至少一个有效关联,避免返回完全无符合条件关联的模型。
  • 在加载pingtree_group时,通过闭包对pingtree_group_entries添加whereHas约束,直接过滤掉关联pingtree无pingtree_entries的条目。
  • 嵌套加载pingtree.pingtree_entries,保证返回的关联数据均为符合要求的有效数据。

内容的提问来源于stack exchange,提问作者Ryan H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:30:24