【问题标题】:Symfony 1.4 doctrine model object data retrieve issueSymfony 1.4 学说模型对象数据检索问题
【发布时间】:2014-06-19 13:39:25
【问题描述】:

在我的 symfony 1.4 应用程序中,我正在使用学说数据模型。我是 symfony 和学说的新手。在 schema.yml 文件中定义数据库表信息后,我从命令行生成了学说模型。那些生成成功。然后我在 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);

    }

【问题讨论】:

标签: doctrine symfony-1.4


【解决方案1】:

使用 Doctrine 时,您使用 ...Table 类从数据库中检索对象(在您的情况下,它将是 TableTable 类。您可以使用它的方法从数据库中获取对象(例如 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();
    }
}

这将在您的模板中打印用户名(当然假设您有一个 ID 为 123 的用户)。

【讨论】:

  • 首先感谢您的回复。是的,正如您所提到的,我在控制器内部调用模型。我有一个用户 ID 为 1 的用户。因此我根据此更改行。$user = Doctrine_Core: :getTable('Table')->find('1');之后加载页面时显示 500 |内部服务器错误 | Doctrine_Connection_Mysql_Exception 错误。
  • 应该是find(1) 而不是find('123')(我在回答中更正了这个),但我不确定这会导致错误。你能粘贴更多关于异常的信息吗?
  • 是的,它不可能。无论如何我改变了它并检查了。但没有用。当我在网上搜索这个时,我看到stackoverflow本身的某个地方有这种问题。有人在那里回答了可能是数据库连接问题并检查 mysql 套接字。我也检查了它。它就在那里。如果我通过命令行构建架构时出现数据库连接问题,我应该得到一个错误。但我没有得到任何和构建成功。所以我很困惑是什么问题?
  • 当您根据schema.yml 文件生成模型类时,不会与数据库建立连接。如果您确实可以访问数据库,请检查您的连接设置。还要仔细阅读错误信息——通常你可以在那里看到重要的细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多