php - 在Yii2中合并2个对象而不进行转换

时间:2016-05-16 02:02:45

标签: php yii

早上好,

我的模型中有2个函数(BaseData.php),其中每个函数都返回一个对象。

在我的EditorController.php中,我将调用这些函数。

$obj1 = BaseData::getRestrictedTemplate($categoryTitle);
$obj2 = BaseData::getCommonCategory($categoryTitle);

我需要的是合并这两个对象..我通过这样做尝试了array_merge ..

$query = (object)(array_merge((array)$obj1, (array)$obj2));

有了它,它就是合并。但是发生的事情是它将对象转换为stdClass而不是yii/db/Query

如何在不更改对象yii/db/Query的情况下执行此操作。 请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

$query = (object)(array_merge((array)$obj1, (array)$obj2));

这将从数组创建一个stdClass对象。 现在,为了创建yii / db / Query对象,再次将此对象传递给yii / db / Query构造函数。

$query = (object)(array_merge((array)$obj1, (array)$obj2));
$query = new yii/db/Query($query);

注意:这仅在两个对象具有相同类别时才有效,否则您将丢失方法或获取未知属性错误。为此,您必须遍历数组并将其所需的键和值分配给类的对象

$array = (object)($mergedArray);
$object = new yii/db/Query();
foreach ($array as $key => $value)
{
  $object->$key = $value;
}