update region
This commit is contained in:
parent
8a56d7cbdd
commit
fad0422534
|
|
@ -14,13 +14,14 @@ namespace Beike\Admin\Http\Controllers;
|
|||
use Beike\Models\Region;
|
||||
use Illuminate\Http\Request;
|
||||
use Beike\Repositories\CountryRepo;
|
||||
use Beike\Admin\Repositories\RegionRepo;
|
||||
|
||||
class RegionController
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$data = [
|
||||
'regions' => Region::query()->with('zones')->get(),
|
||||
'regions' => Region::query()->with('regionZones.zone')->get(),
|
||||
'countries' => CountryRepo::all()
|
||||
];
|
||||
|
||||
|
|
@ -29,16 +30,22 @@ class RegionController
|
|||
|
||||
public function store(Request $request)
|
||||
{
|
||||
return json_success('添加成功');
|
||||
$requestData = json_decode($request->getContent(), true);
|
||||
$region = RegionRepo::createOrUpdate($requestData);
|
||||
return json_success('保存成功', $region);
|
||||
}
|
||||
|
||||
public function update(Request $request)
|
||||
public function update(Request $request, int $regionId)
|
||||
{
|
||||
return json_success('更新成功');
|
||||
$requestData = json_decode($request->getContent(), true);
|
||||
$requestData['id'] = $regionId;
|
||||
$region = RegionRepo::createOrUpdate($requestData);
|
||||
return json_success('更新成功', $region);
|
||||
}
|
||||
|
||||
public function destroy(Request $request)
|
||||
public function destroy(Request $request, int $regionId)
|
||||
{
|
||||
RegionRepo::deleteById($regionId);
|
||||
return json_success('删除成功');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* RegionRepo.php
|
||||
*
|
||||
* @copyright 2022 opencart.cn - All Rights Reserved
|
||||
* @link http://www.guangdawangluo.com
|
||||
* @author Edward Yang <yangjin@opencart.cn>
|
||||
* @created 2022-07-27 10:48:25
|
||||
* @modified 2022-07-27 10:48:25
|
||||
*/
|
||||
|
||||
namespace Beike\Admin\Repositories;
|
||||
|
||||
use Beike\Models\Region;
|
||||
|
||||
class RegionRepo
|
||||
{
|
||||
public static function createOrUpdate($data)
|
||||
{
|
||||
$id = $data['id'] ?? 0;
|
||||
if ($id) {
|
||||
$region = Region::query()->findOrFail($id);
|
||||
} else {
|
||||
$region = new Region();
|
||||
}
|
||||
$region->fill([
|
||||
'name' => $data['title'],
|
||||
'description' => $data['description'],
|
||||
]);
|
||||
$region->saveOrFail();
|
||||
|
||||
$region->regionZones()->delete();
|
||||
$region->regionZones()->createMany($data['region_zones']);
|
||||
$region->load(['regionZones']);
|
||||
return $region;
|
||||
}
|
||||
|
||||
public static function deleteById($id)
|
||||
{
|
||||
$region = Region::query()->findOrFail($id);
|
||||
$region->regionZones()->delete();
|
||||
$region->delete();
|
||||
}
|
||||
}
|
||||
|
|
@ -11,12 +11,21 @@
|
|||
|
||||
namespace Beike\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
|
||||
class Region extends Base
|
||||
{
|
||||
protected $fillable = ['name', 'description'];
|
||||
|
||||
public function zones(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Zone::class, 'region_zones');
|
||||
}
|
||||
|
||||
|
||||
public function regionZones(): HasMany
|
||||
{
|
||||
return $this->hasMany(RegionZone::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
/**
|
||||
* RegionZone.php
|
||||
*
|
||||
* @copyright 2022 opencart.cn - All Rights Reserved
|
||||
* @link http://www.guangdawangluo.com
|
||||
* @author Edward Yang <yangjin@opencart.cn>
|
||||
* @created 2022-07-27 11:01:01
|
||||
* @modified 2022-07-27 11:01:01
|
||||
*/
|
||||
|
||||
namespace Beike\Models;
|
||||
|
||||
class RegionZone extends Base
|
||||
{
|
||||
protected $fillable = ['region_id', 'country_id', 'zone_id'];
|
||||
|
||||
public function country()
|
||||
{
|
||||
return $this->belongsTo(Country::class);
|
||||
}
|
||||
|
||||
public function zone()
|
||||
{
|
||||
return $this->belongsTo(Zone::class);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue