ThinkPHP5 case when的使用

主表的类型不同,需要连接查询不同的表时,可以使用case when


在主表(上面的表中)的模型里面,写如下代码来获取列表:
``

$res =$this->alias("p")
             ->field([
                 'p.*',
                 "CASE WHEN p.pd_ticket_type = 1 THEN (select s.service_name from lbs_services_ticket s where s.service_id=p.pd_ticketid)
                       WHEN p.pd_ticket_type = 2 THEN (select e.goods_name as service_name from lbs_selfgoods e where e.id=p.pd_ticketid)
                       WHEN p.pd_ticket_type = 3 THEN (select g.goods_name from lbs_goods g where g.goods_id=p.pd_ticketid) END"=>"service_name",
                 "CASE WHEN p.pd_ticket_type = 1 THEN (select s.serviceThumbs from lbs_services_ticket s where s.service_id=p.pd_ticketid)
                       WHEN p.pd_ticket_type = 2 THEN (select e.goods_img as serviceThumbs from lbs_selfgoods e where e.id=p.pd_ticketid)
                       WHEN p.pd_ticket_type = 3 THEN (select g.goods_img as serviceThumbs from lbs_goods g where g.goods_id=p.pd_ticketid) END"=>"serviceThumbs",
                 "CASE WHEN p.pd_starttime > unix_timestamp() THEN (p.pd_starttime - unix_timestamp()) ELSE 0 END"=>"countDown",//倒计时
                 'from_unixtime(p.pd_starttime,"%m-%d %H:%i:%S")'=>'pd_starttime',
             ])
             ->where($where)
             ->order("p.pd_addtime desc")
             ->paginate($pagesize);
posted @ 2025-05-05 07:26  Dy大叔  阅读(62)  评论(0)    收藏  举报