如何附加其他Yii 1.16 ActiveRecord模型?

时间:2015-03-12 22:19:14

标签: php activerecord yii model

我熟悉使用Yii来调用记录,但是如何使用现有的活动记录模型并使用不同的查询向其添加更多信息呢?

例如:

$user = User::model()->findByPk(1);
$user[] = User::model()->findByPk(2);

基本上,我正在尝试添加model $ user1 + $ user2。在这种类型的示例中,我希望在同一$ user模型中同时拥有用户1和2。 (我实际上没有尝试过上面的代码,但我认为它不会那样。)从两个请求获得的信息格式完全相同。

请注意,我并不是想让两个用户都这么做。我知道该怎么做。在这个问题中,我试图通过将两个模型合并在一起来获取现有模型并向其添加更多数据以形成一个模型。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

$users = array();
$user1 = User::model()->findByPk(1);
$user2 = User::model()->findByPk(2);
array_push($users, $user1);
array_push($users, $user2);

现在$users是一个包含两个对象的数组。

答案 1 :(得分:1)

您可以使用

$users = User::model()->findAllByPk(array(1,2));

将返回用户模型的数组

答案 2 :(得分:1)

没有内置Yii方式来完成你想要完成的任务。相反,您可以在模型中添加一些自定义增强功能。

private $additionalUsers = array();

public function addAdditionalUser($user)
{
    $this->additionalUsers[] = $user;
}

public function getAdditionalUsers()
{
    return $this->additionalUsers;
}

然后按如下方式使用:

$user = User::model()->findByPk(1);
$user->addAdditionalUser(User::model()->findByPk(2));

但是,如果不通过“合并”模型了解您的意思,这可能会或可能不是您正在寻找的。如果这个答案不符合您的需求,那么您希望如何使用合并模型的示例将非常有用。