草庐IT

Activerecord

全部标签

mysql - 在 rake 任务中打开与 mysql 数据库的连接

我有一个Rails3.2应用程序,它使用PostgreSQL来存储所有信息。但在一个Rake任务中,我需要与MySQL服务器建立连接。我试着这样做:ActiveRecord::Base.establish_connection(:adapter=>"mysql2",:database=>"foo",:user=>"root",:password=>"",)但它只是用这个临时MySQL替换了我的默认PostgreSQL连接。如何为实例建立附加连接? 最佳答案 我找到了一个非常简单的解决方案:使用vanilamysql2gem(http

mysql - ActiveRecord,有意将字符串截断为数据库列宽

在Rails4中,ActiveRecord及其MySQL适配器已设置,因此如果您尝试将AR模型中的属性保存到MySQL数据库,其中属性字符串长度对于MySQL列限制来说太宽了——您将引发异常。太棒了!这比Rails3的默认设置要好得多,Rails3会自动截断字符串。但是,偶尔我有一个属性,我明确希望将其简单地截断为数据库允许的最大大小,无一异常(exception)。我无法找出使用AR执行此操作的最佳/受支持的方法。理想情况下,它应该在设置属性后立即发生,但我认为它会在保存时发生。(这不完全是“验证”,因为我从来不想提出,只是截断,但也许验证系统是执行此操作的最佳支持方式?)理想情况下

mysql - 如何在 Yii2 的一个查询中获取相关表中字段的总和

各位,我有2个表,通过第三个相关:结构如下所示:Playlist:id,channel_id,name,dateFiles:id,name,durationPlaylist-rel-Files:list_id,file_id我在我的应用程序中使用ActiveRecord。当我使用这样的查询来获取最后一个播放列表时:$pl=Playlist::find()->where(['channel_id'=>$model->channel_id])->orderBy(['date'=>SORT_DESC])->limit(1)->one();然后我使用这样的代码来获取与上一个播放列表相关的所有文

mysql - Rails 5 数据库迁移错误

我正在尝试将我的Rails应用程序部署到生产环境,但在尝试调用rakedb:migrate时出现错误,我收到的错误是ActiveRecord::StatementInvalid:Mysql2::错误:操作'get_lock'的非法参数数据类型bigint:SELECTGET_LOCK(2398406209365187035,0)我看不到是哪个迁移导致了这个问题,而且我的所有迁移都没有将:limit设置为转换为bigint来自整数这在暂存中部署得很好,所以我不确定问题出在哪里。我的迁移如下:classCreateDatabase{"CURRENT_TIMESTAMP"},null:fal

php - 存储 HABTM 协会中持有的项目的排序顺序 - CakePHP

在ActiveRecord(CakePHP风格)设置中,我在视频和Bins上设置了HasAndBelongsToMany关联设置:Bin可以存储对视频的n引用,并且视频可以属于n垃圾箱。我需要能够手动设置和存储视频在特定Bin中的显示顺序(以便客户可以在Bin中以特定顺序显示他的视频。)我最初的想法是在Bin中创建一个字段它按照视频ID需要出现的顺序存储一组视频ID。这是处理此问题的最有效方法吗?如果是这样,当我获得HABTM查询结果时,重新排序返回的查询以匹配排序后的ID数组的最干净/最有效的方法是什么?与Bin关联的视频作为数组返回:[Video]=>Array([0]=>Arra

php - 如何知道mysql中删除的行数?

如果$this->db->affected_rows()每次都返回,那么如何知道codeigniter中删除的行数,即。成功或失败也是 最佳答案 $this->db->where($conditions)->delete('mytable');return$this->db->affected_rows(); 关于php-如何知道mysql中删除的行数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

php - 由于构造函数,Yii 模型 isNewRecord false

在YiiActiveRecord中,是否可以在模型构造函数中设置一个属性并仍然使模型的isNewRecord属性保持为真?我有一个模型构造函数来创建一个私有(private)属性来保存PHPPass密码哈希实例。当我这样做时,它会将isNewRecord属性设置为false,即使记录是新创建的。如果id属性大于零,我尝试了在构造函数中调用setIsNewRecord(true)的解决方法,但似乎属性在构造函数中不可用。我不得不删除构造函数,并在每个需要phpass的方法中创建语句。用户模型的构造函数:publicfunction__construct(){$this->phpass=n

php - Yii2:无法通过 + 1 更新列值

我需要在创建新记录时通过+1更新列值:publicfunctionactionCreate(){$model=newCreateBookings();if($model->load(Yii::$app->request->post())){Yii::$app->db->createCommand("UPDATEroom_typesSETtotal_booked=total_booked+1WHEREroom_type='$model->room_type'")->execute();$model->save();return$this->redirect(['view','id'=>$

mysql - Rails 和 CouchDB - 架构问题

我正在从事一个项目,该项目将使用CouchDB来灵活存储文档。我的系统要求非常适合用于存储的CouchDB。但是我的问题归结为:我还应该继续使用ActiveRecord和MySQL吗……有大量方便的插件可以随时用于ActiveRecord(例如身份验证和访问控制)。只是想知道利用现有插件的优势是否值得额外的管理开销和可能的集成问题(跨不同的数据存储工作)。 最佳答案 在单个应用程序中处理多个持久存储的情况并不少见。一种非常常见的方法是使用关系数据库来存储指向存储在文件系统中的文件的路径。因此,您可能会认为CouchDB是用于数据模型

mysql - 使用 MyISAM 表进行 Rails 单元测试

我有一个应用程序需要在几个表上使用MyISAM,但其余的都是传统的InnoDB类型。应用程序本身不关心它应用于这些记录的事务,但性能是一个问题。不过,Rails测试环境假定使用的引擎是事务性的,因此当从schema.rb生成测试数据库时,它会使用相同的引擎导入。是否有可能以简单的方式覆盖此行为?我采取了一种可怕的技巧,通过将其附加到test_helper.rb来确保表的类型正确:(ActiveRecord::Base.connection.select_values("SHOWTABLES")-%w[schema_info]).eachdo|table_name|ActiveRecor