关注雪纳瑞公众号
雪板养护,随问随答
Db::table('think_artist')
->alias('a')
->join('think_work w','a.id = w.artist_id')
->join('think_card c','a.card_id = c.id')
->select();
$join = [
['think_workw','a.id=w.artist_id'],
['think_cardc','a.card_id=c.id'],
];
Db::table('think_user')->alias('a')->join($join)->select();
Db::table('think_artist')
->alias('a')
->join('__WORK__ w','a.id = w.artist_id')
->join('__CARD__ c','a.card_id = c.id')
->select();
__WORK__和 __CARD__在最终解析的时候会转换为 think_work和 think_card
INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
public function ceshi()
{
//给表取别名
$alias=['admin_user'=>'au','admin_class'=>'ac'];
//join数据必须包含2个中括号(SQL join 用于把来自两个或多个表的行结合起来。)第一个参数是表名,第二个参数是表达式
$join= [['admin_class','au.admin_class_id=ac.id']];
//如果多表结合需要这样写
// $join= [
// ['admin_class','au.admin_class_id=ac.id'],
// ['admin_user_status aus','au.admin_user_status_id=aus.id']
// ];
//需要展示的字段(列) ‘ac.class_name’取别名为‘classname’
$field=['au.id','au.name','ac.class_name'=>'classname'];
//条件数组 只有条件数组可以这样定义
$where['au.admin_name']=['=','sushuailong'];
$where['au.state']=['=','1'];
$Admin_user = Admin_user::get(function($query) use($alias,$join,$field,$where){
$query->alias($alias)
->join($join)
->field($field)
->where($where);
});
echo $Admin_user;
}
public function index($key='')
{
//用模型获取分页数据,并转换成数组形式
//给表取别名
$alias=['client'=>'c','service_item'=>'si'];
//join数据必须包含2个中括号(SQL join 用于把来自两个或多个表的行结合起来。)第一个参数是表名,第二个参数是表达式
$join= [['service_item','c.id=si.client_id']];
//需要展示的字段(列)
$field=['c.id','c.product_id','c.name','si.id'=>'si_id','si.name'=>'si_name','si.section'=>'si_section'];
//条件数组 只有条件数组可以这样定义
$where['c.id']=['>','0'];
//关键词查询条件
if($key!=''){
//关键词放中间查询
$map['c.name'] = ['like','%'.$key.'%'];
}
else{
$map['c.id'] = ['>',0];
}
//获取所有客户数据
$c_list=ClientModel::whereOr($map)->alias($alias)
->order(['si.id'=>'desc'])
->join($join)
->field($field)
->paginate(10,false,['type'=>'Cppage']);
//阻断程序执行
//exit("$si_list");
// 获取分页显示
$page = $c_list->render();
// 获取总数据数
$c_num = $c_list->num_total();
//获取产品所有数据
$product_all = ProductModel::all(function($query){
$query->order(['order'=>'asc','id'=>'asc']);
});
//模板赋值
$this->view->assign('c_list',$c_list);
$this->view->assign('c_num',$c_num);
$this->view->assign('product_all',$product_all);
$this->assign('page', $page);
//渲染
return $this->view->fetch('serviceitem_list');
}
关注雪纳瑞公众号
雪板养护,随问随答