几个常用的命令:
启动篇: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();