6
0
Fork 0
jiqu-library-server/app/Admin/Repositories/User.php

65 lines
1.7 KiB
PHP

<?php
namespace App\Admin\Repositories;
use App\Helpers\PhoneNumber;
use App\Models\User as Model;
use Dcat\Admin\Form;
use Dcat\Admin\Repositories\EloquentRepository;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
class User 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);
// }
//添加邀请码处理
$code = $updates['code'];
unset($updates['code']);//移除邀请码
$inviter = null;
if ($code) {
$inviter = Model::when(PhoneNumber::validate($code), function ($query) use ($code) {
$query->where('phone', $code);
}, function ($query) use ($code) {
$query->whereRelation('userInfo', 'code', $code);
})->first();
}
$this->model = $model::create($updates, $inviter);
$this->updateRelation($form, $model, $relations, $relationKeyMap);
});
return $this->model()->getKey();
}
}