基本 - 从Doctrine查询中了解PHP对象

时间:2013-07-05 21:11:32

标签: php symfony doctrine

我正在尝试解决如何处理返回的对象:

$data = $this->getDoctrine()->getRepository('MyBundle:EntityName')->findAll();

我知道我可以把它传递给Twig并以这种方式使用它,但是我需要在它上面做进一步的PHP代码。

我认为这是处理对象时的常见PHP问题。

使用序列化($ data)返回如此多的信息我不知道如何处理它。

我想我需要知道这样的事情:

//to get record 1 / field 1
$data[1]['field1']

......但当然这不起作用。

1 个答案:

答案 0 :(得分:1)

我认为你不需要序列化它,我认为这会使它更难以使用。由于Doctrine知道您检索的实体的类型/类,它将它们作为实例返回,您可以正常地与它们进行交互。

基于您的问题的示例:

假设您想要记录1 - 字段1值,并且您搜索的此实体的结构类似于使字段1为id:

Class Person {
    private $id;
    private $someValue;

    public function getId()
    {
        return $this->id;
    }
    public function setSomething($value)
    {
        $this->someValue = $value;
    }
}

你可以像Kris所说的那样使用$ data [0] - > getId()
您可以访问任何有getter和setter的字段(或者是公开的)

如果你说你需要对这些检索到的对象进行一些修改,请记住$ data只是一个数组对象/实体。你可以这样做:

foreach($data as $object)
{
    $object->setSomething($something);
}

我认为将它们用作对象肯定更好