symfony框架入门之实战手册

几个常用的命令:

    启动篇:app/console server:run -vvv

    路由篇:app/console route:debug   //查看所有的路由

                  app/console route:match /page/index    //查看的固定路由

   控制器: 拿到控制器的所以数据 ($this ->getRequest->参数);//[get,getMethod,cookie,create]等 isXmlRequest判断是不是ajax请求  

                返回json格式的数据    return new JsonRequest(array('a'=1));//返回response对象

                返回response对象  return new Response('a');    

               重定向到某个页面 return new RedirectResponse('www.baidu.com');

               

session :$this ->getRequest ->getSession ->set('a',1000);//设置session的值为1000;

                  $this ->getRequest ->getSession ->get('a',1000);//获取session的值为1000;

                  $this ->getRequest ->getSession ->getFlasBag->add('a','b','c');//设置一次性的session;

                 注解:如果没有拿到session,那就有可能是权限问题,在app/cache/所以的缓存没有写的权限

service :  app/console container:debug//查看所有symfony的服务

                 $doctrine = $this -> get('doctrine');//拿到服务

模板twig : app/console assets:install web --symlink --relative   //资源共享,软连接(web目录的资源和bundle里的resource资源共享);

数据库: Enttly                

数据库连接配置修改在 app/config下面的parameters.yml.

如果没有数据库,可以用命令创建:app/console doctrine:database:create  //数据库名称,就是你配置里的数据库名称

namespace Sourgen\WebBundle\Entity;

use Doctrine\ORM\Mappind as ORM;
/**
* @ORM\Entity(repositoryClass="UserRepository")
* @ORM\Table(name="user")
*/
class user{
      /**
      * @ORM\Id
      * @ORM\Column(type='integer')
      * @ORM\GeneratedValue(strategy="AUTH")
      */
      protected $id;

      /**
      * @ORM\Column(type="string")
      *
      *
      */
      protected $username;

}

接下来对user表的set,get文件进行生成,

命令:app/console generate:doctrine:entities ScourgenWebBundle //自动生成user的get,set方法

          app/console doctrine:schema:update --force //后面的--force是强制执行

如果对表进行了修改

          修改后执行 上面的两个命令。    注意:类里面的方法,并不会自动的给你删除,需要对比后自己删除

        也可以用     app/console doctrine:schema:update --dump-sql //查看发生了哪些改变

表关联  :于上面的用户表关联

namespace Sourgen\WebBundle\Entity;

use Doctrine\ORM\Mappind as ORM;
/**
* @ORM\Entity(repositoryClass="UserRepository")
* @ORM\Table(name="user")
*/
class profile{
      /**
      * @ORM\Id
      * @ORM\Column(type='integer')
      * @ORM\GeneratedValue(strategy="AUTH")
      */
      protected $id;

      /**
      * @ORM\Column(type='integer',nullable=true)
      *
      *
      */
      protected $mobile_num;

}

首先重复上面操作命令,建表。

需要定义两个关联字段:

prifile表里

/**
* @OneToOne(targetEntity="user",inversedBy="profile")
* @JoinColumn(name='user_id',referencedColumnName='id')
*
*/
private $user  //profile表里定义

/**
* @OneToOne(targetEntity='profile',mappedBy="user")
*
*/
private $profile //定义在user里

use Doctrine/ORM/Mapping/OneToOne //在profile
use Doctrine/ORM/Mapping/JoinColumn  //在profile里

验证定义的数据表是否正确:

        app/console doctrine:schema:validate  //动态验证当前定义是否正确

 数据库

     查询:

          关联查询 

            $em = $this -> getDoctrine -> getManager();

          /**

         * @var $user \ScourgenWebBundle\Entity\User

         */

            $user = $e ->getRepository('ScourgenWebBunDle:User')->findOneBy(array('id'=>1));

           foreach($user ->getBooks as $book){ echo $book ->getTitle(); }

      

     添加:

        $em = $this -> getDoctrine -> getManager();

        $user = new User();

     // 一对多关系

     // $book= new Book;

    //$user = $e ->getRepository('ScourgenWebBunDle:User')->findOneBy(array('id'=>1));

    // $book ->addUser($user );

       $user ->setusername = '名字';

     

      $em ->persist($user);

      $em ->flush();

猜你喜欢

转载自blog.csdn.net/wuhounuanyangzhao/article/details/84198055