96 lines
2.3 KiB
PHP
96 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Repositories;
|
|
|
|
use App\Models\CouponSendTask as Model;
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form;
|
|
use Dcat\Admin\Repositories\EloquentRepository;
|
|
use Illuminate\Support\Arr;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class CouponSendTask extends EloquentRepository
|
|
{
|
|
/**
|
|
* Model.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $eloquentClass = Model::class;
|
|
|
|
/**
|
|
* 新增记录.
|
|
*
|
|
* @param Form $form
|
|
* @return mixed
|
|
*/
|
|
public function store(Form $form)
|
|
{
|
|
$result = null;
|
|
|
|
DB::transaction(function () use ($form, &$result) {
|
|
$model = $this->model();
|
|
|
|
$updates = $form->updates();
|
|
|
|
[$relations, $relationKeyMap] = $this->getRelationInputs($model, $updates);
|
|
|
|
if ($relations) {
|
|
$updates = Arr::except($updates, array_keys($relationKeyMap));
|
|
}
|
|
|
|
foreach ($updates as $column => $value) {
|
|
$model->setAttribute($column, $value);
|
|
}
|
|
$model->setAttribute('administrator_id', Admin::user()->id);
|
|
|
|
$result = $model->save();
|
|
|
|
$this->updateRelation($form, $model, $relations, $relationKeyMap);
|
|
});
|
|
|
|
return $this->model()->getKey();
|
|
}
|
|
|
|
/**
|
|
* 更新数据.
|
|
*
|
|
* @param Form $form
|
|
* @return bool
|
|
*/
|
|
public function update(Form $form)
|
|
{
|
|
/* @var EloquentModel $builder */
|
|
$model = $this->model();
|
|
|
|
if (! $model->getKey()) {
|
|
$model->exists = true;
|
|
|
|
$model->setAttribute($model->getKeyName(), $form->getKey());
|
|
}
|
|
|
|
$result = null;
|
|
|
|
DB::transaction(function () use ($form, $model, &$result) {
|
|
$updates = $form->updates();
|
|
|
|
[$relations, $relationKeyMap] = $this->getRelationInputs($model, $updates);
|
|
|
|
if ($relations) {
|
|
$updates = Arr::except($updates, array_keys($relationKeyMap));
|
|
}
|
|
|
|
foreach ($updates as $column => $value) {
|
|
/* @var EloquentModel $model */
|
|
$model->setAttribute($column, $value);
|
|
}
|
|
$model->setAttribute('administrator_id', Admin::user()->id);
|
|
$result = $model->update();
|
|
|
|
$this->updateRelation($form, $model, $relations, $relationKeyMap);
|
|
});
|
|
|
|
return $result;
|
|
}
|
|
}
|