注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 
关于我

淘尽网 http://www.tao3w.com 做最好的比价网站,做最好的数据抓取专家。

网易考拉推荐

【转载】symfony数据库操作初步  

2014-09-12 16:26:38|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、根据id(当然你的表可以不叫id,只要是自增字段即可,系统会自动判断)可以是其他字段了)查找相应记录
$product = $this->getDoctrine()
//                         ->getRepository('Trjcn\HomeBundle\Entity\TrjSite') #这个是详细写法
                        ->getRepository('TrjcnHomeBundle:TrjSite')#这个是简写,取其一即可
                        ->find(1);
查询的结果是对象
一旦有了repository是非常重要的,repository是这么获取的
$repository = $this->getDoctrine()
                             ->getRepository('TrjcnHomeBundle:TrjSite');
//通过主键查询(一般为"id")
$product=$repository->find($id);

//动态方法名基于列值查找
$product=$repository->findOneById($id);
$product=$repository->findOneByName('foo');

//查询所有产品
$products=$repository->findAall();
//基于任意列值查找一组产品
$products = $repository->findByPrice(19.99);

你也可以发挥findBy和findOneBy方法的优势很容易的基于多个条件来获取对象
$product=$repository->findOneBy(array('name'=>'foo','price'=>19.99));

//查询匹配名字的所有产品并按照价格排序
$products = $repository->findBy(
        array('name'=> 'foo'),
        array('price'=>'ASC')
);

2、插入数据库
use Trjcn\HomeBundle\Entity\TrjSite;
$site = new TrjSite();
$site->setSiteName('http://www.tao3w.com')->setAreaIds(30)->setCreated(0);
$em = $this->getDoctrine()->getManager();
$em->persist($site);
$em->flush();
$site->getSiteId();#这是刚插入的自增字段的值,不一定自增字段非得叫id哦,也可以叫good_id

3、删除操作
$em->remove($site);
$em->flush();


4、单表的复杂查询
$em = $this->getDoctrine()->getManager();
        $product =    $em->getRepository('TrjcnHomeBundle:TrjSite');
        $query = $product->createQueryBuilder('p')
                        ->where('p.created > :created')
                        ->setParameter('created',2)
                        ->orderBy('p.created','ASC')
                        ->getQuery()
                        ->getResult();//这里也可以是getSingleResult(),当查询不到记录时候会引发一个异常,但是使用getOneOrNullResult(),没有异常,只是返回一个NULL。
结果是数组对象,注意上面的:created这个冒号和created之间没有空格。如果where有多个条件的话,那么setParameter也必须有多个参数了,就不能使用字符串形式了,要写成如下形式setParameter(array('created'=>2,'area_ids'=>2)),只有一个参数时候必须用字符串,如果用数组,将返回错误。

4、复杂查询的例子
$goods = $em->createQuery('select g.id,g.goodId,g.goodPriceid,g.goodName,g.formats,g.barcode,g.unitType,g.unitPrice,g.amount,g.lucre,g.exchange,g.remark,c.id as checkid,c.status
          from RaysWeibuBundle:Sellgoodsitem g
          left join RaysWeibuBundle:Checkgoods c with g.goodId=c.goodId and c.companyId=:companyid where g.orderId =:orderid')
          ->setParameters(array('companyid'=>$companyid,'orderid'=>$id))
          ->getArrayResult();
  评论这张
 
阅读(248)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017