主表的类型不同,需要连接查询不同的表时,可以使用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);