将值传递给其他实体 Symfony

Pass values to an other entity Symfony

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

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

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

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

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

然后,在 foreach 循环中,我找到与每个地块实体相关的值。这是我遇到问题的地方,我不明白如何访问与我的第一个包裹实体不在同一 table 中的值。 我也不需要使用 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 值,因此我需要一个多维数组。但是我没有研究这个问题,因为我什至无法获得我需要的值。

所以问题来自

$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。