【发布时间】:2019-03-18 06:35:22
【问题描述】:
我正在经历这个查询的多次迭代,我假设我在查询中的某个地方遗漏了一些东西,导致我收到如下错误:
闭包类的对象无法转换为字符串
我的查询:
$test = UnitStandard::select(DB::raw("
count(t1.code),
t1.code,
t1.id,
t1.provider_id,
t1.name,
t1.nqf_level,
t1.credits,
t1.type,
MAX(t1.shared_id),
setas.name as setaName,
providers.name as providerName
"))
->from(function ($query){
$query->select(DB::raw("*"))
->from("unit_standards")
->where("provider_id", "=", 1)
->whereNull("shared_id")
->orWhere("shared_id", "=", 2)
->orderBy("unit_standards.code", "asc");
})
->join('setas', 't1.seta_id', '=', 'setas.id')
->join('providers', 't1.provider_id', '=', 'providers.id')
->where('shared_id', '=', 2)
->orWhere('t1.provider_id', '=', 1)
->groupBy('code')
->havingRaw('COUNT(code) >= 1')
->orderBy('code', 'asc')
->paginate(50);
更新
查看下面的完整错误 sn-p
更新
原始工作 MySQL:
SELECT
count(t1.code),
t1.code,
t1.id,
t1.provider_id,
t1.name,
t1.nqf_level,
t1.credits,
t1.type,
MAX(t1.shared_id),
setas.name as setaName,
providers.name as providerName
FROM(
SELECT * FROM unit_standards WHERE (provider_id = 1 AND shared_id IS NULL) OR shared_id = 2 ORDER BY `unit_standards`.`code` ASC
) AS t1
JOIN setas on t1.seta_id = setas.id
JOIN providers on t1.provider_id = providers.id
WHERE t1.shared_id = 2 OR t1.provider_id = 1
GROUP BY code
HAVING COUNT(code) >= 1
ORDER BY code ASC
LIMIT 50
【问题讨论】:
-
您能再分享一些代码,以便我们可以帮助您吗?
-
@AnkurTiwari 没有更多代码,这是一个索引页面的查询,所以我之后要做的就是返回我的视图,目前是一个 dd();
-
请向我们展示完整的错误消息,并向我们展示它抱怨的行。
-
我怀疑
from()可以使用回调作为参数。