1
我对Laravel非常新,并且正在浏览教程,并且遇到了一些问题。Laravel 5.2中的错误Eloquent - 无法转换为字符串
我有一个复杂的查询,我需要重用where子句中的一个参数更改。我将其添加为我的模型中的查询范围,然后从我的相应控制器调用它。当我尝试返回数据,虽然我得到这个错误:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
下面是该查询范围:
public function scopeCrosstab($wellID)
{
return static::select('sampleDate', \DB::raw("
max(if(chemID=1, pfcLevel, ' ')) as 'PFOA', max(if(chemID=1, noteAbr, ' ')) as 'PFOANote'
"))
->leftJoin('SampleNote', 'WellSample.noteID', '=', 'SampleNote.noteID')
->where('wellID', '=', $wellID)
->groupBy('sampleDate');
}
这里是控制器代码:
public function smith()
{
$wellSamples = WellSample::crosstab(2);
return $wellSamples->get();
//return view('pages.wellsample', compact('wellSamples'));
}
我曾尝试许多不同的用引号括起来的代码排列,用双引号等等。如果我在查询范围内硬编码它的值,但是我需要能够使它成为动态的。
谢谢 - 做到了。出于好奇,这个$查询变量是从哪里来的? – JamesE
它来自Laravel。当你调用该范围时,通过$ query变量的场景后面有一点“魔力”。 https://laravel.com/docs/5.2/eloquent#local-scopes –