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

浙公网安备 33010602011771号