У меня есть таблица компаний и таблица атрибутов со всеми значениями в ней.Обновление Laravel делает новое правило таблицы вместо обновления
Одна компания имеет множество атрибутов и атрибутов принадлежит компании.
Теперь у меня есть значение внутри таблицы атрибутов с помощью «account_nr_start» (например, когда новый пользователь добавляется в компанию, его учетная запись начинает отсчет с 1000).
Контроллер:
public function __construct(Company $company, User $user)
{
if(Auth::user()->usertype_id == 7)
{
$this->company = $company;
}
else
{
$this->company_id = Auth::user()->company_id;
$this->company = $company->Where(function($query)
{
$query->where('id', '=', $this->company_id)
->orWhere('parent_id','=', $this->company_id);
}) ;
}
$this->user = $user;
$this->middleware('auth');
}
public function edit(Company $company, CompaniesController $companies)
{
$companies = $companies->getCompaniesName(Auth::user()->company_id);
$attributes = $company->attributes('company')
->where('attribute', '=', 'account_nr_start')
->get();
foreach ($attributes as $k => $v) {
$nr_start[] = $v->value;
}
return view('company.edit', ['company' => $company, 'id' => 'edit', 'companies' => $companies, 'nr_start' => $nr_start]);
}
public function update(UpdateCompanyRequest $request, $company, Attribute $attributes)
{
$company->fill($request->input())->save();
$attributes->fill($request->only('company_id', 'attribute_nr', 'value'))->save();
return redirect('company');
}
HTML/клинка:
<div class="form-group {{ $errors->has('_nr_') ? 'has-error' : '' }}">
{!! HTML::decode (Form::label('account_nr_start', trans('common.account_nr_start').'<span class="asterisk"> *</span>', ['class' => 'form-label col-sm-3 control-label text-capitalize'])) !!}
<div class="col-sm-6">
{!! Form::text('value', $nr_start[0], ["class"=>"form-control text-uppercase"]) !!}
{!! $errors->first('account_nr_start', '<span class="help-block">:message</span>') !!}
</div>
</div>
Когда я обновлю компанию сейчас, она будет загружать как последний вход здесь::
Так как это делает новое правило, в то время как ему нужно отредактировать текущее правило атрибута вместо создания нового правила с пустым атрибутом company_id /.
Спасибо, работает как шарм, как делает первый метод() работает точно ? – Liam
Первый метод возвращает первый из базы данных, поэтому вы получаете только один объект, который вам нужен. Если в базе данных вам будет необходимо иметь несколько, используйте метод get() и предварите объекты –