【问题标题】:code works from console, but doesn't work in method代码从控制台工作,但在方法中不起作用
【发布时间】:2015-05-27 18:46:32
【问题描述】:

我使用教义 2 制作了 sqlite 数据库。当我从控制台运行 create_product.php 时,它工作正常,但我想从 php 类创建产品。所以我用 create_product.php 代码制作了方法并包含了 bootstrap.php,但我遇到了问题:未定义的变量:entityManager。

create_product.php

<?php
// create_product.php
require_once "bootstrap.php";

    $name = 'name';
    $date = date("d.m.Y");
    $time = time();

    $product = new Product();
    $product->setName($name);
    $product->setSaveDate($date);
    $product->setSaveTime($time);

    $entityManager->persist($product);
    $entityManager->flush();
echo "Created product with ID " . $response->getId() . "\n";
?>

和php类文件:

<?php
namespace app\monitor;
use Product;

require_once dirname(dirname(dirname(__DIR__))) . "/bootstrap.php";

class Service {

public function work() {
       $name = 'name';
       $this->saveProduct($name);   

public function saveProduct($name) {

        $date = date("d.m.Y");
        $time = time();

        $entity = new Product();
        $entity->setName($name);
        $entity->setSaveTime($time);
        $entity->setSaveDate($date);

        $entityManager->persist($entity);
        $entityManager->flush();
    }
}

为什么它可以从控制台工作,但不能在方法中工作?

【问题讨论】:

    标签: php sqlite doctrine-orm


    【解决方案1】:

    首先,您不能在 body 类中调用方法(不能在其他方法中)。其次 $entityManager 将为空(它不是 saveProduct 方法变量)。

    【讨论】:

    • 好吧,但是我可以用 saveProduct 方法将 $entity 保存在数据库中吗?
    • 从依赖注入容器中获取实体管理器(如果您使用的是类似 symfony 的应用程序)。我不知道没有它怎么办。也许尝试在方法 saveProduct 中包含引导程序,但这是一种非常肮脏的方式:)
    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多