Yii2 ActiveRecord在快速加载后获得新关系
我在Yii2有一个项目,我有两个一对一的模型 这两个模型分别是Yii2 ActiveRecord在快速加载后获得新关系,yii2,Yii2,我在Yii2有一个项目,我有两个一对一的模型 这两个模型分别是Plan和Subscription,分别有getSubscription和getPlan方法 我渴望通过使用以下工具加载一大群: $plans = Plan::find()->with('subscription')->all(); 但是,我正在修改一些计划ssubscription\u id: $plan->subscription_id = 5; $plan->save(); 问题是现在$plan->s
Plan
和Subscription
,分别有getSubscription
和getPlan
方法
我渴望通过使用以下工具加载一大群:
$plans = Plan::find()->with('subscription')->all();
但是,我正在修改一些计划
ssubscription\u id
:
$plan->subscription_id = 5;
$plan->save();
问题是现在$plan->subscription
包含原始订阅
,而不是带有新id的订阅
有没有办法让Yi2仅在id更新后(而不是延迟加载所有订阅之后)才能获取新的订阅
。如果我没有误解,您可以这样做
<?php
use yii\db\ActiveRecord;
class Plan extends ActiveRecord
{
public function init()
{
$this->on(self::EVENT_AFTER_UPDATE, [$this, 'afterUpdateHandler']);
}
/**
* @param \yii\db\AfterSaveEvent $event
*/
public function afterUpdateHandler($event)
{
if (isset($event->changedAttributes['subscription_id']))
{
$this->subscription = NULL;
}
}
// ...
}
?>
下次您调用$plan->subscription
,您的计划
关联的订阅将被改装
您还可以重写afterSave
方法,而不是将其实现为事件处理程序
如何修改它?将该代码共享为well@AzraarAzward只需$plan->subscription\u id=5;然后$plan->save();我将更新我的问题。您正在使用哪个版本的Yii。这些关系是如何定义的?