123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace app\common\dao\store;
- use app\common\dao\BaseDao;
- use app\common\model\BaseModel;
- use app\common\model\store\CityArea;
- class CityAreaDao extends BaseDao
- {
- protected function getModel(): string
- {
- return CityArea::class;
- }
- public function search(array $where)
- {
- return CityArea::getDB()->when(isset($where['pid']) && $where['pid'] !== '', function ($query) use ($where) {
- $query->where('parent_id', $where['pid']);
- })->when(isset($where['address']) && $where['address'] !== '', function ($query) use ($where) {
- $address = explode('/', trim($where['address'], '/'));
- $p = array_shift($address);
- if (mb_strlen($p) - 1 === mb_strpos($p, '省')) {
- $p = mb_substr($p, 0, -1);
- }
- $pcity = $this->search([])->where('name', $p)->find();
- if ($pcity) {
- $query->whereLike('path', "/{$pcity->id}/%");
- }
- $query->where(function ($query) use ($address) {
- foreach ($address as $item) {
- if ($item) {
- $query->whereOr('name', $item);
- }
- }
- });
- });
- }
- public function getCityList(CityArea $city)
- {
- if (!$city->parent_id) return [$city];
- $lst = $this->search([])->where('id', 'in', explode('/', trim($city->path, '/')))->order('id ASC')->select();
- $lst[] = $city;
- return $lst;
- }
- }
|