2015-06-09 4 views
1

У меня есть таблица компаний и таблица атрибутов со всеми значениями в ней.Обновление 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> 

Когда я обновлю компанию сейчас, она будет загружать как последний вход здесь:: enter image description here

Так как это делает новое правило, в то время как ему нужно отредактировать текущее правило атрибута вместо создания нового правила с пустым атрибутом company_id /.

ответ

1

Если я понимаю, что вы пытаетесь сделать, я думаю, что это исправит вашу проблему. У вас есть модель Attribute - это новый экземпляр модели, а не выбор требуемой модели.

перед запуском заливки() из атрибутов метод попробовать это

$new_attribute = $attributes->where('company_id', '=', $company->id)->where('attribute', '=', 'account_nr_start')->first(); 

Затем запустите заливку()

$new_attribute->fill($request->only('company_id', 'attribute_nr', 'value'))->save(); 
+0

Спасибо, работает как шарм, как делает первый метод() работает точно ? – Liam

+1

Первый метод возвращает первый из базы данных, поэтому вы получаете только один объект, который вам нужен. Если в базе данных вам будет необходимо иметь несколько, используйте метод get() и предварите объекты –

Смежные вопросы