草庐IT

activeRecord

全部标签

php - 简单的 afterSave 方法在 Yii 中不起作用

我想通过afterSave方法更新insertedraw中的一个字段,所以我在DriverModel中开发了以下代码protectedfunctionafterSave(){parent::afterSave();if($this->isNewRecord){$newid=self::newid($this->id);$this->updateByPk($this->id,newCDbCriteria(array('condition'=>'driverid=:driverid','params'=>array('driverid'=>$newid))));}}在Controller中

mysql - 将无效的 ActiveRecord 日期插入 MySQL 数据库

MySQL允许date字段的值为0000-00-00,但是ActiveRecord将分配给Date值为nil。我有一个遗留应用程序依赖于“从不”概念的确切字段内容,因此如果客户最后付款日期是0000-00-00,它会确认为“从不”付费。有没有一种方法可以覆盖此date字段的ActiveRecord(正确)验证并将此值写入数据库而不会弄脏我的手(太)?感谢您的任何见解。 最佳答案 我在Rails3.0.3项目中遇到了这个问题,猴子修补了以下内容,允许您将“0000-00-00”分配给模型日期字段。该值将在插入/更新时传递到mysql数

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'=>$