将值传递给其他实体 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。
我需要做的是将不同实体内的许多不同值的列表导出为 .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。