| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace App\Module\Farm\Repositories;
- use App\Module\Farm\Models\FarmLand;
- use Dcat\Admin\Repositories\EloquentRepository;
- use Illuminate\Database\Eloquent\Collection;
- /**
- * 土地信息仓库
- *
- * 提供土地信息数据的访问和操作功能。
- * 该类是土地信息模块与后台管理系统的桥梁,用于处理土地信息数据的CRUD操作。
- */
- class FarmLandRepository extends EloquentRepository
- {
- /**
- * 模型类名
- *
- * @var string
- */
- protected $eloquentClass = FarmLand::class;
- /**
- * 更新数据
- *
- * 重写父类方法,确保status字段被正确处理
- *
- * @param \Dcat\Admin\Form $form
- * @return bool
- */
- public function update(\Dcat\Admin\Form $form)
- {
- $model = $this->model();
- if (!$model->getKey()) {
- $model->exists = true;
- $model->setAttribute($model->getKeyName(), $form->getKey());
- }
- $result = null;
- \Illuminate\Support\Facades\DB::transaction(function () use ($form, $model, &$result) {
- $updates = $form->updates();
- // 获取关联关系数据,但不处理它们
- [$relations, $relationKeyMap] = $this->getRelationInputs($model, $updates);
- if ($relations) {
- $updates = \Illuminate\Support\Arr::except($updates, array_keys($relationKeyMap));
- }
- // 确保status是整数
- if (isset($updates['status'])) {
- $updates['status'] = (int)$updates['status'];
- }
- foreach ($updates as $column => $value) {
- $model->setAttribute($column, $value);
- }
- $result = $model->update();
- // 我们不调用updateRelation方法,因为它可能会导致错误
- // 土地模型没有复杂的关联关系需要在表单中更新
- });
- return $result;
- }
- }
|