【问题标题】:get item type of an Eloquent collection in Laravel在 Laravel 中获取 Eloquent 集合的项目类型
【发布时间】:2018-06-26 15:09:12
【问题描述】:

我正在尝试找到在集合中检索 Eloquent Model 类型的项目的最佳方法。

当然我可以获取第一个项目并询问它的类型,但很可能我遇到了一个空集合,然后没有其他方法可以获取类型。 这个问题与这里的这个问题相似 C# - Get the item type for a generic list 但我找不到任何解决这个问题的 laravel 或 php。

【问题讨论】:

    标签: php laravel-5 collections eloquent


    【解决方案1】:

    集合上有一个名为getQueueableClass() 的函数,它将返回集合中项目的类型。该函数基本上执行get_class($collection->first()),但它负责询问集合之前是否为空。但是,正如您在源代码中看到的,如果集合中有不同类型的对象,它将引发异常。

    https://github.com/illuminate/database/blob/master/Eloquent/Collection.php#L392

    【讨论】:

    • 这带来了坏消息,我浏览了代码,但我认为没有我想要的答案!如果集合为空,则此方法基本上返回 null,这不是我想要的。这个集合可以这样声明 $users = App\Users::all(),即使是空的我也需要知道类型
    • 这些集合不像 C# 或 Java 中的集合那样工作,您必须声明要存储的数据类型。你想完成什么。
    • 我可以通过其他方式实现我想要实现的目标,但我不会以这种方式遵循 CLEAN 架构。虽然我会管理,但没关系。我认为可能有办法像 c# 那样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 2021-07-10
    • 2018-11-11
    • 1970-01-01
    • 2019-03-08
    • 2018-12-27
    • 2021-09-08
    相关资源
    最近更新 更多