Symfony 1.4 doctrine model object data retrieve issue

梦想的初衷 提交于 2019-12-11 18:41:37

问题


In my symfony 1.4 application i'm using doctrine data models.I'm new to symfony and doctrine.I generated doctrine models from command-line after defining database table information in the schema.yml file.Those generated successfully.Then i created a custom function inside Table.class.php file.Following is that.

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

}

I want to know how to call this inside the controller ? I called it normal MVC application's way.But i don't know whether it's correct in symfony.In symfony 1.4 manual also i couldn't find a proper way to do this.

This is my controller.

class loginActions extends sfActions
{

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

}

Then i tried to print this inside view.

<?php 
   echo $userdata;
?>

But view is showing an empty page.

Update with exception details--------------------------------

stack trace at () in SF_SYMFONY_LIB_DIR\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connection.php line 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:


When using Doctrine you retrieve objects from the database using the ...Table classes (in your case it will be a TableTable class. You can use its' methods to fetch objects from DB (e.g. find($id)) and then access them. So in your case your classes should something like this:

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

Now it effectively becomes just an alias of getUsername().

Then in your action:

class loginActions extends sfActions
{

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

This will print the username in your template (assuming of course that you have a user with id 123).



来源:https://stackoverflow.com/questions/24308016/symfony-1-4-doctrine-model-object-data-retrieve-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!