草庐IT

Activerecord

全部标签

mysql - 动态更改数据库连接 Yii

我正在从事一个项目,其中多个网站将从一个Yii安装运行。每个网站都有自己的数据库,所以数据库连接必须是动态的。我所做的是,我创建了一个BeginRequestBehavior,它将在“onBeginRequest”中启动。在这里,我将检查调用了哪个url并确定匹配的数据库(尚未在我的代码中)并创建(或覆盖)“db”组件。attachEventHandler('onBeginRequest',array($this,'switchDatabase'));}/***Changedatabasebasedoncurrenturl,eachwebsitehashisowndatabase.*C

php - 如何用一个序列化数据连接两列?

我正在尝试构建一个支持多类别产品的网店,因此每当我从中选择特定类别时,我serialize()并将它们保存到数据库中。所以现在,我想通过尝试连接两个表来输出包含我需要的所有数据库数据的连接表:CATEGORIES和ECOMMERCE_PRODUCTS在我的app/models/ecommerce_model.php:$this->db->select('ecommerce_products.id,categories.idAScatid,categories.titleAScategories,ecommerce_products.manid,ecommerce_products.na

mysql - Rails 4 在原始事件记录查询中获取列名

我有一些代码如下所示:query=问题是salaries在这种情况下以数组的形式返回。这些查询有点复杂,我使用的名称(例如fd_salary、dd_salary等)不是PlayerSalary中的物理属性模型。无法执行类似salaries.first.fd_salary的操作。有没有一种方法可以更改Rails4中的上述内容以使其按列名访问值? 最佳答案 你可以使用find_by_sql为此:find_by_sql(sql,binds=[])ExecutesacustomSQLqueryagainstyourdatabaseandre

mysql - 获取所有当前连接到 yii2 ActiveQuery 中的查询

有没有办法从查询中获取所有连接表?例如:query=Account::find()->joinWith(['gallery'])->joinWith(['articles'])->etc...yii2中是否有任何集成方法可以返回上述连接表(或我可以Hook以手动获取它们的事件)? 最佳答案 @Beowulfenator建议的解决方案仅显示与关系的连接(使用joinWith()方法添加。要显示所有连接,您需要像这样准备查询:$query=Account::find()->join('...','...')->joinWith(['ga

mysql - 如何获取 rails 事件记录属性对应的 SQL 值

如果我有一些activerecord对象,有没有办法在保存记录之前获取将插入到数据库中的相应SQL值?也就是说如果有一个datetime类型的列,那么它会被转换成某种字符串格式,还会序列化一个json属性,那么有没有办法提前知道这些值? 最佳答案 我想我找到了:)首先获取数据库的值,然后引用它。假设我们有一个书籍模型:Book(title,published_at,...)book=Book.new(title:"Sometitle",published_at:Time.now)value_for_database=book.ins

mysql - rails/mysql - 我如何消除 ActiveRecord::StatementInvalid 错误?

我正在编写代码来处理已读/未读消息,使用一个简单的user_id/message_idmysql表来处理已读/未读状态。当用户查看消息时,我执行Reading.create(:user_id=>uid,:message_id=>mid)在user_id/message_id字段组合上有唯一索引,所以当Readings中的条目已经存在时,我得到关于重复条目的ActiveRecord::StatementInvalid错误。现在我可以添加unlessReading.exists?(:user_id=>uid,:message_id=>mid)Reading.create(:user_id=

sql - 如何避免在 MongoDB(使用 Mongoid)或 ActiveRecord(使用 MySQL 的 Rails)中插入两次相同的记录?

例如,如果我们正在执行记录page_type、item_id、日期、页面浏览量、timeOnPage的分析。看来他们有几种方法可以避免它。有自动方式吗?在唯一标识记录的字段上创建索引,例如[page_type,item_id,date]并使索引唯一,这样在添加相同记录时,会拒绝或者,如果DB或框架支持,则将以上作为唯一的主索引。不过,在Rails中,通常ID1、2、3、4是主索引。或者,使用[page_type,item_id,date]查询记录,然后更新该记录(如果它已经存在)(或者如果pageviews和timeOnPage已经存在则不做任何事情具有相同的值)。如果记录不存在,则使

mysql - 在 Ruby 中运行任意 SQL 查询

我刚刚接到任务,要在工作中自动执行报告任务。以前,有人会使用GUI工具在MySQL数据库上运行大型任意SELECT,然后使用相同的工具将结果导出到CSV。现在我想编写一个Ruby脚本来执行此操作。我知道Ruby中的FasterCSV,但就SQL查询而言,我只使用过ActiveRecord,您通常不会在其中编写查询,而是使用模型和关联。上一次在代码中写出完整的SQL是在编写PHP代码时。在Ruby中做这种事情最直接的方法是什么?我应该使用ActiveRecord吗? 最佳答案 如果您正在编写复杂的应用程序,使用ActiveRecord

mysql - ActiveRecord 为与 MySQL 的 has_and_belongs_to_many 关系生成昂贵的 DESCRIBE 查询

我们有一个刚刚开始开发的Rails3应用程序。我们在两个模型之间使用has_and_belongs_to_many关系。每次我们使用其中一个模型时,ActiveRecord都会在连接表上执行一个DESCRIBE查询,例如:SQL(1.1ms)describe`articles_tags`这些查询相对昂贵(也就是说,比实际的SELECT查询慢10倍以上)并且执行得非常频繁。它们对我来说似乎不是必需的:由于has_and_belongs_to_many关系,该表是自动生成的,因此ActiveRecord应该已经知道它的结构(只是一个article_id和一个tag_id列)。这种行为有充分

php - CodeIgniter 事件记录 : Debugging without running SQL

我是CodeIgniter的新手,我正在使用ActiveRecord处理新项目中的所有查询。有没有办法不用实际运行就输出SQL语句。我创建的函数中有很多语句,选择、删除和更新,我想在测试环境中运行它们之前确保它们是正确的,因为它们周围有很多Ifs和case建立查询。简而言之,我只想让它回显语句,而不是运行它。提前致谢!:) 最佳答案 查看DatabaseQueryHelper中列出的insert_string()和update_string()方法用户指南部分。对于select,您需要在运行命令后运行$this->db->last_