Symfony 1.4 doctrine模型对象数据检索问题

时间:2014-06-19 13:39:26

标签: doctrine symfony-1.4

在我的symfony 1.4应用程序中,我正在使用doctrine数据模型。我是symfony和doctrine的新手。我在schema.yml文件中定义数据库表信息后,从命令行生成了doctrine模型。生成成功。然后我在Table.class.php文件中创建了一个自定义函数。以下是。

class Table extends BaseTable
{
 public function getuname()
 {
    $user=new Table();
    $uname=$user->getUsername();
    return $uname;
 }

}

我想知道如何在控制器内调用它?我称之为正常的MVC应用程序。但我不知道它是否在symfony中是正确的。在symfony 1.4手册中我也找不到合适的方法来执行此操作。

这是我的控制器。

class loginActions extends sfActions
{

  public function executeIndex(sfWebRequest $request)
  {
     $this->userdata = User::getuname();
  }

}

然后我尝试在内部视图中打印。

<?php 
   echo $userdata;
?>

但是视图显示空页。

使用例外详情更新--------------------------------

堆栈跟踪 在 () 在SF_SYMFONY_LIB_DIR \ plugins \ sfDoctrinePlugin \ lib \ vendor \ doctrine \ Doctrine \ Connection.php第1082行......

    $message .= sprintf('. Failing Query: "%s"', $query);

    }


    $exc  = new $name($message, (int) $e->getCode());

    if ( ! isset($e->errorInfo) || ! is_array($e->errorInfo)) {

        $e->errorInfo = array(null, null, null, null);

    }

1 个答案:

答案 0 :(得分:0)

使用Doctrine时,您使用...Table类从数据库中检索对象(在您的情况下,它将是TableTable类。您可以使用其方法从DB中获取对象(例如find($id))然后访问它们。所以在你的情况下你的类应该是这样的:

class Table extends BaseTable
{
    public function getuname()
    {
       return $this->getUsername();
    }
}

现在它实际上只是getUsername()的别名。

然后在你的行动中:

class loginActions extends sfActions
{

    public function executeIndex(sfWebRequest $request)
    {
        $user = Doctrine_Core::getTable('Table')->find(123);
        $this->userdata = $user->getuname();
    }
}

这会在您的模板中打印用户名(当然假设您的用户名为123)。