草庐IT

php - Yii2 查询中的数据过滤

在我的Yii2项目中,我将posts表链接到categories表作为多对多关系(posts_categories表)。在我的Post模型中,我有getByCategory($category_id)函数,它返回该类别的所有帖子。在Controller中,我有actionCategory,我在其中使用此函数并传递特定类别的所有帖子。我在View中还有一个GET表单,用于通过GET参数过滤我的帖子(我需要将此值包含在标题或显示的帖子内容中)。问题是我不知道如何以智能方式将一些过滤功能应用于Controller中的getByCategory调用。我的功能代码:publicstaticfun

php - 如何将此查询转换为 yii 查询?

这个问题在这里已经有了答案:howtoconvertthisqueryinyiiframeworkmodel(2个答案)关闭9年前。我希望将此Sql命令转换为yiicactivedataprovider格式,以便我可以向数据提供程序提供此条件。SELECT*FROM(SELECT(CASEWHENproduct_nameLIKE'%nokia%'THEN1ELSE0END+CASEWHENproduct_nameLIKE'%lumia%'THEN1ELSE0END+CASEWHENproduct_nameLIKE'%800%'THEN1ELSE0END)ASnumMatches,pro

php - CDbCriteria 和 mysql 使用 INDEX()

我在yii中遇到了activerecord的问题。所以基本问题是如何将USEINDEX()mySQL条件定义为CDbCriteria以将其传递给CActivedataprovider。我没有在api或代码中找到它。也许有人以前遇到过这个问题,可以分享他的解决方案。谢谢。 最佳答案 我找到了解决方案。https://github.com/yiisoft/yii/issues/1385这个hack有助于简单的选择和索引。 关于php-CDbCriteria和mysql使用INDEX(),我们

mysql - yii 中的 CDbcriteria.?

如何使用CDBcriteria编写以下查询,我正在尝试使用cdbcriteria在GridView中显示我的数据。是否有任何其他方法可以在不使用CDBcriteria的情况下在cgridview中显示数据。SELECT*FROM`user`WHERErole='employer'Ihavetriedlikebelow:$criteria=newCDbCriteria;$criteria->condition='role=employer';returnnewCActiveDataProvider('manageemployers',array('criteria'=>$criteria

php - 如何在 yii 中设置命令超时?

我正在努力寻找在Yii中为MySql数据库设置命令超时的位置(一些查询需要一段时间才能运行)。在源代码中,文件protected/config/main.php具有以下设置:'db'=>array('connectionString'=>'mysql:host=xxx;dbname=xxx;port=xxx;timeout=100;','emulatePrepare'=>true,'username'=>'xxx','password'=>'xxx','charset'=>'utf8','schemaCachingDuration'=>3600,),超时似乎适用于连接,命令超时默认为3

php - 如何在 yii2 ActiveRecord 中使用查询缓存

我引用的是指南:``查询缓存是一种建立在数据缓存之上的特殊缓存功能。用于缓存数据库查询结果。查询缓存需要数据库连接和有效的缓存应用程序组件。查询缓存的基本用法如下,假设$db是一个yii\db\Connection实例:$result=$db->cache(function($db){//theresultoftheSQLquerywillbeservedfromthecache//ifquerycachingisenabledandthequeryresultisfoundinthecachereturn$db->createCommand('SELECT*FROMcustomerW

php - 从 yii 2 中的其他表按计数(*)排序

我有2个表:视频和喜欢video表有字段:id,title..喜欢表有字段:id、video_id、user_id我想获得最喜欢的10个视频。我可以通过命令在sql中完成:SELECTvideos.*,COUNT(likes.video_id)AScountlikeFROMvideosLEFTJOINlikesONvideos.id=likes.video_idGROUPBYvideos.idORDERBYcountlikeDESCLimit10我如何使用yii2在ActiveRecord中实现它如有任何帮助,我将不胜感激。提前致谢! 最佳答案

mysql - 按自定义值排序 Yii2

我想在自定义字段上对记录进行排序,但它在yii2中给我错误,任何人都可以帮助我。->orderBy(player.PlayerRole,'G','D','M','F');其中G、D、M和F是自定义值。这在mysql中工作正常,但在yii2中却不行。这个我也试过$expression=newExpression('field(player.PlayerRole,G,D,M,F)');->orderBy($expression)这里是完整的查询$expression=newExpression('field(player.PlayerRole,G,D,M,F)');return(newQu

php - Yii2 在 sql 中插入日期和时间

我正在创建一个yii应用程序,我想将数据插入数据库,但问题是如何插入日期和时间。在我从数据库中删除日期时间列之前,它无法插入所有详细信息。这是Controller类:['class'=>AccessControl::className(),'rules'=>[['actions'=>['index','confirm','resend','logout'],'allow'=>true,'roles'=>['?','@'],],['actions'=>['account','profile','contact','resend-change','cancel','advertiser_d

mysql - Yii2 查询未正确引用

我一次又一次地遇到这个问题。如果能找出如何正确构建查询,这样我就可以停止使用Yii::$app->db->createCommand()作为解决方法,那就太好了。我的Yii2查询:$users=UserSpatial::find()->select('user_id,harvesine(y(coordinates),x(coordinates),:lat,:lon)asdist,astext(coordinates)')->where('st_within(coordinates,envelope(linestring(point(:rlon1,:rlat1),point(:rlon2