Laravel Eloquent:它是如何工作的?基于动态模式元数据查找=性能?

3
整个持久化层是一个相当大且复杂的 Laravel 组件。是否有人已经深入研究过它并能简要解释一下,在内部的原理图下正在发生什么呢?
  1. 与其他 ORM 层相比,Eloquent 似乎没有将列元数据缓存/存储在应用程序中?还是说它这样做了?(在 Java JPA 或 Doctrine 中,这是通过注释完成的,但是 laravel 似乎没有这些元数据?)
  2. 这意味着它必须在每次请求时从MySQL查询 INFORMATION_SCHEMA.COLUMNS。这是否意味着,laravel 每次简单的 SQL 查询都必须发出两个查询(第一个查询以获取列/表定义)?
  3. 在一个新实例/门面上调用 hasColumn 是否不可避免地会导致 SQL 查询,以检索元数据/表定义吗?
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接