在Yii2中合并2个对象而不进行投射


Merging 2 Objects without casting in Yii2

早上好,

我的模型(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.的情况下完成此操作。。请帮忙。谢谢

$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;
}