如果我有T-SQL(或存储过程)从多个表返回记录(也许使用DBI),有没有办法让我手动实例化ActiveRecord模型及其关联?很显然,我在数据库性能之后。我希望能够构建自己的对象层次结构(模型及其关系),但是当我完成所有工作时,我希望每个模型都能正常运行。也就是说,我希望这可以在没有可能导致我的结构行为异常的黑客攻击下完成。手动实例化ActiveRecord模型及其关系?
编辑:
这是有点做作,但它确实说明了如何一个查询可以返回数据n级深(其中“n”只有实际限制),并在一个调用返回一切到数据库:
SELECT * FROM customers
WHERE id = 1;
SELECT * FROM orders
WHERE customer_id = 1;
SELECT * FROM lineitems
WHERE order_id IN (
SELECT id FROM orders
WHERE customer_id = 1
);
然后拥有所有的记录,我会简单地映射我自己的关联。通过ActiveRecord和:include来做这件事的问题是,它会多次访问数据库而不是仅仅一次 - 随着“n”的增加,更多的是征税。
我是否正确理解您想要获取SQL查询的结果并从它们实例化ActiveRecord对象? – 2009-10-05 15:28:56
是的,还有协会。 – Mario 2009-10-06 00:06:09
如果仔细观察,您最后的查询实际上不会返回订单和客户,它只是返回lineitems。如果你需要这3个查询来获得assosciations,那么它与使用include相同:include with ActiveRecord – Staelen 2009-10-06 02:02:32