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();