76 lines
1.7 KiB
PHP
76 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use app\common\controller\Backend;
|
|
use app\admin\model\data\Area as AreaModel;
|
|
|
|
/**
|
|
* 省市区数据控制器
|
|
*/
|
|
class Address extends Backend
|
|
{
|
|
protected $areaModel = null;
|
|
|
|
public function _initialize()
|
|
{
|
|
parent::_initialize();
|
|
$this->areaModel = new AreaModel;
|
|
}
|
|
|
|
/**
|
|
* 获取省市区树形数据
|
|
* @return void
|
|
*/
|
|
public function index()
|
|
{
|
|
$list = $this->areaModel->where('pid', 0)
|
|
->order('id', 'asc')
|
|
->field('id, pid, level, name')
|
|
->with(['children' => function ($query) {
|
|
return $query->field('id, pid, level, name')->with(['children' => function ($query) {
|
|
return $query->field('id, pid, level, name');
|
|
}]);
|
|
}])
|
|
->select();
|
|
|
|
$this->success('获取成功', $list);
|
|
}
|
|
|
|
/**
|
|
* 获取下级地区
|
|
* @return void
|
|
*/
|
|
public function children()
|
|
{
|
|
$pid = $this->request->param('pid', 0);
|
|
|
|
$list = $this->areaModel->where('pid', $pid)
|
|
->order('id', 'asc')
|
|
->field('id, pid, level, name')
|
|
->select();
|
|
|
|
$this->success('获取成功', $list);
|
|
}
|
|
|
|
/**
|
|
* 根据名称搜索地区
|
|
* @return void
|
|
*/
|
|
public function search()
|
|
{
|
|
$keyword = $this->request->param('keyword');
|
|
if (empty($keyword)) {
|
|
$this->error('请输入搜索关键词');
|
|
}
|
|
|
|
$list = $this->areaModel->whereLike('name', '%' . $keyword . '%')
|
|
->order('id', 'asc')
|
|
->field('id, pid, level, name')
|
|
->limit(20)
|
|
->select();
|
|
|
|
$this->success('获取成功', $list);
|
|
}
|
|
}
|