无法使用 API 平台保存具有布尔属性的表单数据

Cannot save form data having boolean attribute with API Platform

我正在使用 Symfony4 和 API 平台,API 平台运行良好。

我正在尝试使用 FormType 和 Http 客户端组件 保存数据,但是如果表单具有布尔属性,我会收到此错误:

An exception occurred while executing 'INSERT INTO book (isbn, title, description, author, publication_date, active, price) VALUES (?, ?, ?, ?, ?, ?, ?)' with params ["ISBN 2-7654-1005-8", "Test book", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt u", "Alex", "2020-01-10 16:43:53", null, null]:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'active' cannot be null

但是如果我从表单中删除属性“active”,数据就会很好地保存在数据库中。

这是 $data 的转储,其中包含表单数据:

这是控制器:

/**
 * @Route("/new", name="admin_book_new", methods={"GET", "POST"})
 */
public function new(Request $request)
{

    $book = new Book();

    $form = $this->createForm(BookType::class, $book);

    $form->handleRequest($request);
    
    if ($form->isSubmitted() and $form->isValid()) {

       $data = $form->getData();

        $this->client->request('POST', $this->getParameter('base_url').'/books', array(
            'json' => $data
        ));

        return $this->redirectToRoute('admin_book_index');

    }

    return $this->render('admin/book/new.html.twig', array(
        'form' => $form->createView()
    ));
}

我是这样解决的:

    if ($form->isSubmitted() and $form->isValid()) {

        $data = [];
        foreach ($form->all() as $field) {
            $name = $field->getName();
            $value = $field->getData();

            $data[$name] = $value;
        }

        $this->client->request('POST', $this->getParameter('base_url').'/books', array(
            'json' => $data
        ));

        return $this->redirectToRoute('admin_book_index');

    }