我正在开发一个 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);
我需要获取结果并使查询存储潜在客户的结果并将其显示在视图上。
因为上面没有声明查询实例。所以 $query 是一个空变量,对吧? 所以你可以直接调用模型并应用where条件。
ModelName::whereIn('lead_owner_id', $ownerIds)->get();