草庐IT

mysql - Yii2 迁移以增加列长度

在Yii2中,我希望创建一个迁移以将varchar列的字符限制从255更改为765。使用$this->alterColumn('my_table','text_column','string');将使第255列保持原样。我正在考虑使用mysql将列更改为TEXT而不是Varchar,但是在Yii2中有没有办法做到这一点? 最佳答案 改变varchar长度:$this->alterColumn('my_table','text_column',$this->string(765));将列类型更改为text:$this->alterCo

mysql - YII SQL 查询优化

我有一个巨大的ID列表,我需要通过一个表来查询这些ID是否在表中可用,如果是,则获取其模型。因为有几千个ID,这个过程真的很慢,因为我使用的是CActiveRecord::find()方法例如。$book=Book::model()->find('book_id=:book_id',array(':book_id'=>$product->book_id));我什至索引了所有可能的键,仍然没有改进。有什么提高执行速度的建议吗?提前致谢:) 最佳答案 1)制作图书ID列表foreach$productinProduct-List$boo

php - Yii2 - 在 GridView 中按一对多对一关系排序和过滤

我有3个模型:PurchaseOrders、PurchaseOrderItems和Vendors。PurchaseOrders可以有多个PurchaseOrderItems与之关联,每个PurchaseOrderItem可以有一个与之关联的供应商。我的难题是,我不仅需要在PurchaseOrderGridView中显示供应商,还需要使该列能够被过滤和排序。我已经找到MySQL查询来获取与PurchaseOrder相关联的供应商,但在将它与Yii2捆绑在一起时不知所措。查询:SELECTpos.id,pos.notes,group_concat(distinct(vend.name)or

php - 如何使用 Yii2 将模型数据和关系模型导出到 json?

是否有连接mysql表的模型:Yii::t('app','ID'),'name'=>Yii::t('app','Name'),......];}publicfunctiongetUser(){return$this->hasOne(User::className(),['id'=>'userid']);}}Controller:......publicfunctionactionIndex(){$searchModel=newTable1Search();$dataProvider=$searchModel->search(Yii::$app->request->queryParams

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 - Yii2 将列类型转换为整数

在Yii2中,我有一个模型,例如Product。我想要做的是从数据库中选择一个额外的列作为int这是我正在做的一个例子:Product::find()->select(['id',newExpression('20astype')])->where(['client'=>$clientId])->andWhere(['','hidden',0]);问题是,我得到的结果是“20”。换句话说,20作为字符串返回。如何确保选择的是整数?我也尝试了以下方法,但它不起作用:Product::find()->select(['id',newExpression('CAST(20ASUNSIGNED

php - MySQL 查询中的 Yii2 REGEXP

如何在yii2中使用像下面这样的SQL查询?select*fromSkill_NameswhereSkillNameREGEXP'PHP|MYSQL'我不需要像(SkillNameLike%PHP%orSkillNameLike%MYSQL%)这样的东西,因为我需要使用REGEXP。 最佳答案 最简单的是直接查询:Yii::$app->db->createCommand("select*fromSkill_NameswhereSkillNameREGEXP'PHP|MYSQL'")->queryAll();如果您有Skill_Nam

php - 打印出 SQL 单个查询 (Yii 1.x)

我有一个使用CDbCriteria生成的大量查询,如下所示:-$schema=Yii::app()->db->schema;$builder=$schema->commandBuilder;//howtoechooutthisquery?$command=$builder->createFindCommand($schema->getTable('myuser'),$criteria);$results=$command->queryAll();我知道我可以使用Yii的“日志记录”功能来查看查询,是否可以只回显这个单个查询(而不是让Yii向我显示页面上正在运行的大量其他查询).

php - 在 Yii 的 Controller 中创建构造方法

我刚开始学习Yii,我在其中创建了一个PostControllerController。在此Controller中,我有一个使用Sessions的要求。所以我创建了一个构造方法,其代码如下public$session;publicfunction__construct(){$this->session=newCHttpSession;$this->session->open();}但在创建此构造函数后,Controller无法正常工作并报错。删除此代码后,我的Controller运行良好。我在构造函数中编写了这段代码,以便在actionCreate和actionUpdate的每个方法中

php - 在 Yii 中设置默认时区

我在config.php中使用以下时区配置'timeZone'=>'UTC',它工作正常,所有日期都根据UTC存储在数据库中。现在每个用户在他/她的个人资料中都有自己的时区,例如UTC+5、UTC-5、UTC+0等p>现在如何根据用户时区在报告中显示日期。我使用事件记录从数据库中获取记录。是否有针对所有查询的通用方法,或者我们每次都必须在php中手动将日期转换为用户时区??谢谢。 最佳答案 你可以在Yii的main.php配置文件中添加以下值来设置时区returnarray('timeZone'=>'Asia/Kolkata',)对