首页 > 解决方案 > 将值传递给其他实体 Symfony

问题描述

我需要做的是将不同实体内许多不同值的列表导出为 .csv。我需要在特定日期创建的每个引用都具有相关值。

我所做的首先是按日期查找所有对象并将它们放入一个数组中。

$parcelRepo = $this->getDoctrine()->getRepository(Parcel::class);

    $dateToday = new \DateTime("now");

    $parcels = $parcelRepo->findBy([
        'date_add' => $dateToday
    ]);

然后,在 foreach 循环中,我找到与每个宗地实体相关的值。这是我遇到问题的地方,我不明白如何访问与我的第一个包裹实体不在同一个表中的值。我也不需要使用 SQL。

这是我得到“只有变量应该通过引用传递”错误的代码。

$array = [];


    foreach ($parcels as &$p) {
        $array.array_push(
            $p->getDeliveryOrder()->getProduct()->getAccount()->getCoclico(),
            "1",
            "",
            $p->getDeliveryOrder()->getUser()->getLogin(),
            $p->getDeliveryOrder()->getProduct()->getCode(),
            $p->getInternalReference(),
            $p->getDeliveryOrder()->getProduct()->getCode()+"0"+$p->getNumber(),
            "121",
            $p->getName(),
            $p->getAddress4(),
            $p->getAddress1(),
            $p->getAddress2(),
            $p->getAddress3(),
            "téléphone", //TODO
            $p->getPostalCode(),
            $p->getCity(),
            \DateTime::createFromFormat('Ymd',$dateToday),
            "",
            "",
            "0"
        );
    }

我想我需要使用 QueryBuilder 但想知道是否还有其他方法可以做我需要的事情,因为 QueryBuilder 接近 SQL(据我了解)。

此外,由于我需要在一行中导出每个 foreach 值,因此我需要一个多维数组。但是我没有研究这个问题,因为我什至无法获得我需要的值。

标签: phpsymfonydoctrine-orm

解决方案


所以问题来自

$array.array_push(

这段代码实际上合并了 $array 和 array_push() 返回值,array_push() 第一个参数应该是你想要推入的数组(通过引用发送),因为你实际上是发送一个值而不是一个变量,所以这个错误出现。

这是 array_push https://www.php.net/manual/ro/function.array-push.php的文档, 所以它实际上应该是

array_push($array, ...);

但是正如 Ricardo 给你留下的评论,这段代码并不是真正需要的,你可以从查询中获取这样的格式化数据,链接多个关系调用,如:

$p->getDeliveryOrder()->getProduct()->getAccount()->getCoclico()

并不是真正可取的,但如果你认为你不能这样做,那么解决方法就是正确编写 array_push 。


推荐阅读