草庐IT

ActiveRecord

全部标签

mysql - 防止 Rails 缓存 ActiveRecord 查询的结果

我有一个rake任务需要遍历大量记录(称为商家),每个记录都有大量关联项目。我的问题是,由于Rails会自动缓存我的数据库查询结果,我很快就将我的工作人员放入交换空间。简而言之,我想知道如何运行如下命令:Merchant.all.each{|m|items=m.items}每次都不会缓存“items”的值。我试过:Merchant.all.eachdo|m|ActiveRecord::Base.connection.uncacheddoitems=m.itemsendend我还尝试将其添加到我的商家模型中:defitems_uncachedself.class.uncached{ite

php - Yii2:使用 Query 与 ActiveRecord 构建复杂查询

我有这两个查询,第一个是使用ActiveRecord编写的,第二个是使用yii\db\Query自定义制作的。在我的本地主机查询中,用Query编写的查询速度快2-4毫秒,但更难编写。此外,使用AR编写的查询将执行多个数据库查询以及SHOWCREATETABLE查询,总计比我执行AR时执行的查询多10或12个。此外,AR要求您为关系网络中的每个表定义AR模型,而如果您避免使用AR,您最终会在您的应用程序中使用更少的类/文件。我的问题是,您会使用AR还是会使用yii\db\Query编写查询?AR更漂亮也更容易编写,但它会生成如此多的查询,这是个问题吗?我在一个网站上工作,该网站的表格有

php - 具有事件记录的 Codeigniter MySQL AES?

我如何使用codeigniters事件记录来使用mysql的内置aes加密/解密函数从数据库中插入/更新/选择数据?我知道我可以只使用普通的sql查询,但我想理想地使用事件记录。谢谢 最佳答案 如果您使用之前提供的代码:$this->db->set('password',"AES_ENCRYPT('{$data['password']}','my_key')",FALSE);在将密码传递给db->set之前,您仍然应该转义密码使用:$pass=$this->db->escape($data['password']);这样,如果密码包

mysql - ActiveRecord 查询 : order by a sum on an included model

项目有_many:itemsItembelongs_to:project我正在尝试按项目各自项目的总价对项目进行排序。像这样的东西:Project.includes(:items).order('SUM(items.price)')使用这段代码,ActiveRecord只返回第一个项目。我错过了什么? 最佳答案 我还没有尝试过v3的东西,但我认为它会是这样的Product.joins(:items).group('products.id').order('SUM(items.price)')

mysql - 如何在 Rails 3.1.0 应用程序中访问多个数据库?

在我们的Rails3.1.0应用程序中,我们希望根据用户凭证访问多个数据库。有多种解决方案。一种是为每个用户安装一个应用程序,每个应用程序只访问一个数据库。问题是,如果有很多数据库(例如数百个),那么应用安装的数量就会相等。维护大量应用程序可能很麻烦。另一种方法是在应用程序中访问多个数据库。然而,rails3.1.0似乎不支持这种方法。当然,应用程序中会有一个代码来决定刚刚登录的用户访问哪个数据库。有人可以提供有关该方法优缺点的解决方案和见解吗?非常感谢。 最佳答案 您应该能够使用ActiveRecord::Base.establi

php - Codeigniter Active Record HAVING/WHERE db.field = db.field

谁能告诉我,这是否可以通过事件记录来实现?如何实现?$this->db->select('*');$this->db->from('table1');$this->db->join('table2','table1.id=table2.fi_id','left');$this->db->having('table1.second_id','table2.fi_second_id',false);$query=$this->db->get();问题在于,'table2.fi_second_id'始终被视为字符串-而不是数据库字段。也用'where'试过这个-这是同样的问题。谢谢

mysql - 如何在 ActiveRecord 模型的属性中存储数组?

我的模型waypoint有两个属性坐标geocode_text和模型route只不过是带有一些额外文本信息的排序的航路点数组。有些路线可以有相同的航点,所以我想将航点与路线分开。在路线内存储航路点的最佳方式是什么?我看到了几种方式:将航路点id序列化为route的waypoint_ids属性,但在这种情况下,我将无法在一个SQL请求中获取路线及其所有航路点,因为航路点id将隐藏在序列化字符串中。创建具有此类参数的第三个模型路线编号航点编号职位通过多对多关联连接路线和航点,并将航点在route的位置存储在position属性中。但它似乎过于复杂。在这种情况下,对我来说最好的方法是什么?

mysql - rails 引擎 : Namespacing foreign key references to other models in the same engine

我已经为名为TestAppTv的数据库设置了一个带有MySQL的命名空间Rails3.2.19引擎,它有2个模型:发布和评论。我希望Comments属于Posts,但我希望它具体引用TestAppTv::Post。我知道我可以通过指定class_name以及我的belongs_to/has_many调用来做到这一点。moduleTestAppTvclassComment现在,我的困惑在于数据库。test_app_tv_comments表中默认的foreign_key似乎是“post_id”。但是,在我看来,这并没有遵循与应用程序其余部分相同的命名空间思想。post_id是指test_a

php - 计算数据库中的行数

我正在学习有关使用CI/jQuery进行分页的教程。在本教程中,他们通过执行以下操作获得总行数:$config['total_rows']=$this->db->count_all('tblUsers');他们获取用户总数来定义分页。但是,他们获得了所有用户。在我的应用程序中,我只需要为用户分配特定值,在本例中为“角色”。我只需要数据库中role=1的用户。我已经用->count()(来自CI的ActiveRecordDB类)尝试了一些事情,或者尝试用count()检查有多少'rows'一个数组有,但我一直无法得到我需要的结果。我还尝试执行常规查询:selectcount(*)from

mysql - 根据关联对象的数量查询事件记录

我有两个模型Company和Role分别由has_many和belongs_to关联关联。我需要找一家恰好有“n”个角色的公司。我想到了Company.joins(:roles).having("'count(roles.id)=?',3")但这行不通。是否有针对此的事件记录解决方案?谢谢。 最佳答案 协会-角色属于:公司公司有_many:roles因此,选择标准将是-Company.joins(:roles).group(:company_id).having('count(company_id)=?',3)或Company.jo