Обновить сущность в цикле foreach - PullRequest
0 голосов
/ 11 февраля 2019

Мне нужно проверить, существует ли идентификатор в массиве в моей базе данных, если мне нужно поставить какой-нибудь "флаг" в один из столбцов, но у меня есть проблема с ним.

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

    curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
    $fields = curl_exec($ch);

    $reader = Reader::createFromString($fields, 'r')
        ->setDelimiter(',');

    $records = $reader->getRecords(['id_pr']);

    foreach ($records as $offset => $record) {
        $product = $this->productsRepository->findOneBy(['id_pr' => $record['id_pr']]);

This is where i need to update my DB, for each record i need to update 
column 'flag' by eg. '1' but i dont know how :(

    }
    curl_close($ch);

Я пробовал что-то вроде $ product-> setFlag (1);но я не могу вызвать сеттеры или геттеры

Это дает мне ошибку: вызов функции-члена setFlag () со значением null

Вот так выглядит моя сущность Products:

class Products
{    

/**
 * @ORM\Column(type="integer")
 */
private $id_pr;
/**
 * @ORM\Column(type="integer", nullable=true)
 */
private $flag;

public function getIdPr(): ?int
{
    return $this->id_pr;
}

public function setIdPr(int $id_pr): self
{
    $this->id_pr = $id_pr;

    return $this;
}

/**
 * @return mixed
 */
public function getFlag()
{
    return $this->flag;
}

/**
 * @param mixed $flag
 */
public function setFlag($flag): void
{
    $this->flag = $flag;
}

1 Ответ

0 голосов
/ 11 февраля 2019
foreach ($records as $offset => $record) {
    $product = $this->productsRepository->findOneBy(['id_pr' => $record['id_pr']]);
    if($product) {
        $product->setFlag($flagValue);
        $this->getDoctrine()->getManager()->flush(); //I'm assuming that you're in a controller
    }
}
...