我有3个表,例如数据库中的一个article表,一个tag表,一个article_tag表。文章和标签是N-M关系。当我需要添加新文章时,使用Yii2的事件记录的link()方法将关系保存到联结表,它工作正常。但是当我需要更新联结表时。如果我再次调用文章的link()方法。不起作用。下面是我的代码和错误信息。$tag_ids=Yii::$app->request->post('Article')['tags'];foreach($tag_idsas$value){$tag=Tag::findOne($value);$model->link('tags',$tag);}SQLSTATE[
我想在ActiceRecord扩展的类中的hasMany函数中的$link数组中使用OR运算符。例如,我想获取与用户帐户相关的交易。在sql中,它类似于SELECT*FROMtransactionsWHEREfromAccountId=:idORtoAccountId=:id但我如何使用Yii2编写此代码publicfunctiongetTransactions(){return$this->hasMany(Transaction::className(),['fromAccountId'=>'id','toAccountId'=>'id']);} 最佳答案
我不知道出了什么问题,但我无法插入数据库。这是我在模型中得到的。保修.phpTimestampBehavior::className(),'createdAtAttribute'=>'tstamp','updatedAtAttribute'=>false,'value'=>newExpression('NOW()'),],];}/***@inheritdoc*/publicfunctionrules(){return[[['item_no','warranty_date'],'required'],[['warranty_date','date'],'string'],['create
我的数据库在后台使用MyISAM引擎,所以我无法调用级联删除操作,因为MyISAM不支持它。同时,我想删除我的yii2应用程序中的相关记录。我该怎么做? 最佳答案 有几种方法可以解决这个问题。1)创建一个trigger在数据库端:CREATETRIGGERtrigger_nameBEFOREDELETEONtable_nameFOREACHROWBEGIN--variabledeclarations--triggercodeEND;2)删除yii2里面的相关记录beforeDelete功能:publicfunctionbeforeD
我能够找到构建子查询的简单示例,但是当我需要包含WHERE条件时,我无法弄清楚也找不到解决方案。我正在尝试模拟以下语句...SELECTParentTable.*,(SELECTMAX(ChildTable.NumberField)FROMChildTableWHEREChildTable.FK_Id=ParentTable.Id)FROMParentTable我猜我需要类似...$query=ParentClass::find()->addSelect(ChildClass::find()->where('childTable.fk_id=parentTable.id')->max(
我从手册/演示应用程序/其他任何地方复制了Yii数据库连接的未修改(我认为)代码。而且,如果我没记错的话,它默认设置了'emulatePrepare'=>TRUE。然后我找到this和thisanswer和更多消息来源,似乎都在声称,使用模拟准备是错误的想法。它是旧版本RDBMS(尤其是我的MySQL)的某种遗留物,不应在现代版本的MySQL/PHP上使用。有人可以证实吗?我们应该在Yii应用中使用'emulatePrepare'=>FALSE吗? 最佳答案 您链接到的两个答案都是毫无意义和主观的。他们未能提供避免模拟模式的特定理由
每当我尝试登录我的Yii应用程序时,它都会显示类似的错误CDbConnectionfailedtoopentheDBconnection:couldnotfinddriver.我在谷歌上搜索了很多小时,从许多博客中我知道我需要pdo_mysql但它已经安装了。在php.ini中,我还对这些行进行了评论;extension=php_pdo_mysql.dll;extension=php_mysql.dll并重新启动了apache服务器,但仍然显示相同的概率。我正在使用ubuntu11.04。请帮助我解决错误。 最佳答案 sudoapt
我有一个Aziende模型,它与另一个名为Annunci的模型相关(1:N),如下所示:'annunci'=>array(self::HAS_MANY,'Annunci','azienda_id'),我想计算有多少条记录确实有这种关系,在mySql中我会这样做:SELECTcount(*)FROM`aziende`aJOINannuncianONan.azienda_id=a.id我如何使用YiiAR模型做到这一点?PS:我试图查看条件查询,但找不到方法。 最佳答案 在Yii关系类型中,我们有STAT为您做这件事。在关系()中:'a
我仍在研究Yii1.x.x中CDbCriteria的全部功能-我有一个相当复杂的SQL查询,我想将其转换为在模型中使用CDbCriteria格式的查询(如果这可以用更复杂的查询。我最初的尝试..$criteria=newCDbCriteria;$criteria->select=array('t.classroom_id,title','COALESCE(COUNT(DISTINCTr.redeemed_code_id),0)AStotalRewards','COALESCE(COUNT(DISTINCTocm.user_id),0)AStotalStudents','COALESCE
我有一个mysql表Vegetables,其中包含字段price和unit。单位可以是1或2,表示千克(1)或吨(2)。是单位重量。价格取决于单位,因此price=200withunit=1低于price=20withunit=2,因为1吨=1000千克问:我有类似...ORDERBY'price'ACS的查询。如何根据同一张表的unit字段根据price下单?只是不知道该怎么做..在单词上它就像...ORDERBY{if(this.unit==1):price;else:price*1000}ACS我在这个项目中使用yii2:Vegetable::find()->addOrderBy