在 Laravel 查询体中过滤潜在客户时出现不明确的列错误

问题描述 投票:0回答:1

我正在开发一个 Laravel 应用程序,我需要根据关联的

company_users
表中的属性对潜在客户应用过滤器。我尝试实现一个功能,根据与开始、结束、包含或不包含
lead_owner
字段中的特定文本的文本输入过滤以
company_users.name
开头的功能。

我获取了所有所有者 ID,但是当我将其应用于查询时,查询没有给出结果。

我尝试查看这个的sql代码,并将代码应用到MySQL上,我得到了结果,但我发现我没有得到结果。

<?php
if ($request->filled('lead_owner') && $request->filled('lead_owner_text')) {
    $filterType = $request->input('lead_owner');
    $ownerText = $request->input('lead_owner_text');

    if (is_array($filterType)) {
        $ownerIds = [];

        foreach ($filterType as $type) {
            if ($type === 'startWith' && !empty($ownerText)) {
                $ownerIds = array_merge($ownerIds, CompanyUsers::where('companyId', $user->companyId)
                    ->whereRaw("LEFT(name, ?) = ?", [strlen($ownerText), $ownerText])
                    ->pluck('id')->toArray());
            } elseif ($type === 'endWith' && !empty($ownerText)) {
                $ownerIds = array_merge($ownerIds, CompanyUsers::where('companyId', $user->companyId)
                    ->whereRaw("RIGHT(name, ?) = ?", [strlen($ownerText), $ownerText])
                    ->pluck('id')->toArray());
            } elseif ($type === 'contain' && !empty($ownerText)) {
                $ownerIds = array_merge($ownerIds, CompanyUsers::where('companyId', $user->companyId)
                    ->where('name', 'like', "%{$ownerText}%")
                    ->pluck('id')->toArray());
            } elseif ($type === 'doesntContain' && !empty($ownerText)) {
                $ownerIds = array_merge($ownerIds, CompanyUsers::where('companyId', $user->companyId)
                    ->where('name', 'not like', "%{$ownerText}%")
                    ->pluck('id')->toArray());
            }
        }

        if (!empty($ownerIds)) {
            $query->whereIn('lead_owner_id', $ownerIds);
        }
    }
}

此代码不起作用:

$query->whereIn('lead_owner_id', $ownerIds);

我需要获取结果并使查询存储潜在客户的结果并将其显示在视图上。

php laravel laravel-11
1个回答
0
投票

因为上面没有声明查询实例。所以 $query 是一个空变量,对吧? 所以你可以直接调用模型并应用where条件。

ModelName::whereIn('lead_owner_id', $ownerIds)->get();
© www.soinside.com 2019 - 2024. All rights reserved.