我在通过eloquent从我的数据库中获取一些数据时遇到了问题:
首先我这样做是为了从clase_schedule表中获取'id'和'capMax':
$plazas = DB::table('clase_schedule')->select(['schedule_id', DB::raw('SUM(capMax) as capMax')])->groupBy('schedule_id')->get();
然后我想获得表格时间表的名称,其中我之前获得的ID与此表格中的ID一致,如下所示:
$nom_horarios = DB::table('schedule')->select('name')->where('id', 'in', $plazas->schedule_id)->get();
我收到此错误:
"Trying to get property of non-object"
答案 0 :(得分:2)
Since, $plazas
is an array so you should loop the $plazas
to get the value in next query as below :
foreach ($plazas as $plaza)
{
$nom_horarios[] = DB::table('schedule')->select('name')->where('id', 'in',$plaza->schedule_id)->get();
}
print_r($nom_horarios);
答案 1 :(得分:0)
$ plazas返回一个项目数组,而不是get(),使用first()。这将返回单个项目。
Create PROCEDURE [dbo].[TestProc]
@Attr1 NVARCHAR(50) = '[Col]'
@Calc numeric(3,2) = 0.1
@JobID NVARCHAR(15) = '1'
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(200)
DECLARE @params NVARCHAR(200)
SET @sql = 'SELECT DISTINCT JobID, PERCENTILE_CONT('+@Calc+') WITHIN GROUP (ORDER BY '+@Attr1+') OVER(PARTITION BY JobID) AS S_1_10 FROM TABLE WHERE JobID = @JobID'
SET @params = '@JobID NVARCHAR(15)'
EXECUTE sp_executesql @sql, @params, @JobID=@JobID
END
或在foreach中循环广场
答案 2 :(得分:0)
$plazas
变量中返回什么内容?
我认为问题是你得到的是一个集合,而不是一个项目...如果你想只获得一个广场,你应该->first()
而不是->get()
;