【问题标题】:Laravel Eloquent: How does it work? Based on dynamic Schema MetaData-Lookup = Performance?Laravel Eloquent:它是如何工作的?基于动态模式元数据查找 = 性能?
【发布时间】:2015-11-09 06:32:28
【问题描述】:

整个持久层是一个相当大而复杂的 laravel 组件。有没有人已经深入研究过它并且可以用几句话解释它,引擎盖下到底发生了什么?

  1. Eloquent(与其他 ORM 层相比)似乎没有在应用程序的某处缓存/存储列元数据?或者是吗? (在 Java JPA 或 Doctrine 中,这是通过 Annotations 完成的,但 laravel 似乎没有这个元数据?)
  2. 这意味着它必须查询来自 MySQL 的每个请求 INFORMATION_SCHEMA.COLUMNS。这是否意味着,laravel 对于每个简单的 SQL 查询都必须使用两个查询(第一个获取列/表定义?)
  3. 在新的实例/外观上调用 hasColumn 是否会不可避免地导致 SQL 查询,只是为了检索元数据/表定义?

【问题讨论】:

    标签: php mysql performance laravel eloquent


    【解决方案1】:

    据我所知,您是对的,Eloquent 不会缓存或存储列元数据。但这并不意味着每个查询都需要一秒钟的时间来请求信息架构。查询构建器只是假设您知道哪些列名是合法的,然后创建和发送查询。这意味着,如果您选择未知列,您将获得异常!最后hasColumn 导致一个SQL 查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多