【问题标题】:Collection does not return object on first() method集合在 first() 方法上不返回对象
【发布时间】:2019-01-10 00:55:35
【问题描述】:

我有一个代码,我尝试使用“first()”方法获取 eloquent 集合对象的第一个对象,但我得到一个“尝试获取非对象异常的属性”。

如果我使用 foreach 循环集合,则访问每个对象的属性没有问题。 但是当我尝试访问我试图通过“first()”方法获取的第一条记录的属性时(我真的不介意集合的对象),然后我明白了,返回的不是对象。

$movimientos = 
            Om_movimiento::with(['estado_om',
                                'om' => function($query)
                                        {
                                            $query- >with('legajo','legajo_cuadrilla','terminal.armario.central','tipo_trabajo_om');
                                        }])
                          ->where('id_om', '=', $request->get('id_om'))
                          ->orderBy('created_at','asc')
                          ->get();


        foreach($movimientos as $m)
        {
            echo $m->fecha_movimiento;
        } //->no error here

        echo $movimientos->first()->fecha_movimiento; //->error trying to get "fecha_movimiento" property.

我在这里遗漏了什么吗?

【问题讨论】:

  • 可能是在第一种情况下,您只需要第一条记录。然后您可以将->get() 更改为->first()
  • 我知道了,但是如果我需要所有记录,并且我只想获得其中任何一个,但只有一个,并且在 get() 之后,最好的方法是什么?跨度>
  • 请问您可以 dd($movimientos) 吗?
  • 我认为 $movimientos 可能是一个数组而不是对象的集合,这就是为什么你不能使用->fecha_movimiento
  • Oooooohhhhh 我不知道这个 dd() 的东西...我从数据库中没有检索到任何东西,谢谢!!

标签: php laravel eloquent


【解决方案1】:

您无法访问$movimientos 上的first(),因为它当前没有从数据库返回集合。您可以使用变量转储var_dump() (http://php.net/manual/en/function.var-dump.php) 或模具转储dd() 进行调试。

【讨论】:

    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2018-11-09
    • 2012-06-24
    • 2020-01-05
    相关资源
    最近更新 更多