鉴于我有一个包含标量值的数组(我相信),我如何将它们转换为教义实体?
例如:
array(
array("name" => "Alex", "id" => 1)
array("name" => "Chris", "id" => 2)
)
到一组用户实体。
答案 0 :(得分:2)
使用Serializer组件将是一个干净的方法:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="4dp">
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_gravity="center"
android:indeterminate="true"/>
</FrameLayout>
http://symfony.com/doc/current/components/serializer.html#deserializing-an-object
答案 1 :(得分:1)
我知道的唯一方法是做这样的事情:
// loop over the array
foreach ($users as $user) {
// new entity
$post = new User();
// now loop over the properties of each post array...
foreach ($user as $property => $value) {
$method = sprintf('set%s', ucwords($property));
// use the method as a variable variable to set your value
$post->$method($value);
}
// persist the entity
$em->persist($post);
}
答案 2 :(得分:0)
即使这是一个非常老的问题,我也想添加另一种方法:Symfony附带了一个PropertyAccessor
类,该类有助于确定给定对象的getter和setter函数。 ucwords
是找到它们的许多方法之一,并且此访问器类试图找到所有可能性。使用它,poxama的代码可能如下所示:
$propertyAccessor = PropertyAccess::createPropertyAccessor();
// loop over the array
foreach ($users as $user) {
// new entity
$post = new User();
// now loop over the properties of each post array...
foreach ($user as $property => $value) {
try {
$propertyAccessor->setValue($user, $property, $value);
} catch (NoSuchPropertyException $ex) {
// go on
}
}
// persist the entity
$em->persist($post);
}