在我的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);
}
答案 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
)。