controller 中的 一定要用
$this->model = new 模型; 标准格式也是唯一的格式
否则前端字段查询 会报 Integrity constraint violation: 1052 Column 'createtime' in where clause is 之类的错误,
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$where 会对当前模型的表的字段做处理,
详见代码 /application/common/controller/Backend.php 中275行和302行
if (!empty($this->model)) {
$name = \think\Loader::parseName(basename(str_replace('\\', '/', get_class($this->model))));
$name = $this->model->getTable();
$tableName = $name . '.';
}
if (stripos($k, ".") === false) {
$k = $tableName . $k;
}
buildparams()方法会获取当前模型的表名
在302行 判断要查询的字段前有没有表名,如果没表名会追加当前表名
在js中,要显示的关联表字段要加表名
{field: 'order_num', title: '订单号'},
{field: 'user.user_name', title: '姓名'},
没有加表名的会自动加上当前模型的表名
controller 标准格式
$this->model = new \app\admin\model\Order();
// 这里一定要用$this->model 否则前端查询时会报错
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if ($this->request->isAjax()){
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$total = $this->model
->where('order.status','=',2)
->with('user')
->where('unit_id',$this->unit_id)
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->with('user')
->where('order.status','=',2)
->where('unit_id',$this->unit_id)
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
$list = collection($list)->toArray();
$result = array("total" => $total, "rows" => $list);
return json($result);
}
with关联中的user 在 Order model 中添加
belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
}
?>
在前端JS 中 使用方法,
zdxx: function () {
var table_zdxx = $("#table_zdxx");
table_zdxx.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.zdxx_index,
extend:{
},
toolbar: '#toolbar_zdxx',
sortName: 'id',
pagination: true,
commonSearch: true,
search: true,
columns: [
[
{field: 'state', checkbox: true, },
{field: 'id', title: 'ID'},
{field: 'order_num', title: '订单号'},
{field: 'user.user_name', title: '姓名'},
{field: 'num', title: '购买数量'},
{field: 'money', title: '金额'},
{field: 'isinvoice', title: '是否开票',formatter:function (value) {
if(value==0)
return '未开票';
else if(value==1)
return '已开票';
},
searchList: {"0": '未开票', "1": '已开票'},},
{field: 'createtime', title: '申请时间',formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange',},
]
]
});
// 为表格1绑定事件
Table.api.bindevent(table_nbry);
},