Laravel雄辩的问题获得db数据

时间:2016-03-16 11:10:55

标签: php mysql database laravel eloquent

我在通过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"

3 个答案:

答案 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();