2015-05-06 4 views
0

У меня есть 2 простых таблиц ниже:Laravel 5: одна форма для обновления 2 связанных таблиц. Как?

CUSTOMERS 
id, email 

CLAIMS 
id, customer_id(fk), description 

Я создал соответствующие модели (Customers.php и Claims.php) и настройки отношения: hasOne() и belongsTo().

У меня также есть мои соответствующие контроллеры RESTful: CustomersController.php и ClaimsController.php.

Что было бы лучшим решением, если мне нужно создать/обновить записи в обеих таблицах, отправив одну форму? Создать один общий контроллер? Смешать модели?

Я искал в документах Laravel и в Google и до сих пор не знаю, как этого достичь.

+1

Контролерам не обязательно иметь отношение «один к одному» к моделям. Создание клиента в «ClaimsController» при необходимости просто отлично. – ceejayoz

+0

Почему люди не используют кнопку ответа в эти дни. «Контроллерам не нужно иметь отношения« один к одному »с моделями. Создание клиента в ClaimsController при необходимости просто отлично». это ответ. –

ответ

0

модель клиента модель

public function claims(){ 
    return $this->hasMany('App\Claims'); 
} 

Иски

public function customer(){        
    return $this->belongsTo('App\Customer'); 
} 

Теперь в контроллере и нужно отправить запрос в магазине действия

что-то вроде этого

class CreateCustomerClaim extends Request { 

    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'email' => 'required', 
      'description'=> 'required' 

     ]; 
    } 
} 

Сейчас в STO повторное действие отправить запрос, данные захватить из запроса и вставить его в дб

public function store(CreateCustomerClainsRextends $request) 
{ 
    //example 
    $customer= new Customer($request->all()); 

    Auth::user()->claims()->save($customer); 

} 

если и нужно обновить использовать тот же запрос в функции обновления, когда и получить данные из запроса просто использовать обновление. Вот пример, когда я обновляю 3 разных таблицы по одному запросу

public function update($id,ArtikalUpdateRequest $request) 
{ 
    $article = Artikal::findOrFail($id); 
    if($article !== null){ 

     $article->update($request->all()); 

     \DB::table('artikal_podkategorija') 
      ->where('artikal_id', $article->id) 
      ->update(array('podkategorija_id' => $request['podkategorija'])); 

     \DB::table('arikalslike') 
      ->where('artikal_id', $article->id) 
      ->update(array('NazivSlike' => $request['NazivSlike'])); 

     $slika = \DB::table('arikalslike') 
      ->where('artikal_id', $article->id)->first(); 



     $image = Request::file('image'); 
     //dd($image); 

     if($image != null){ 

      $destinationPath = 'uploads/artiklislike/'; 


      $thumb = $slika->SifraSlike; 
      $fileName = $thumb; 
      $nazivthumb = $slika->NazivThumb; 


      $slika->NazivSlike = $request['NazivSlike']; 
      $slika->NazivThumb = $nazivthumb; 
      $slika->SifraSlike = $fileName; 
      $slika->artikal_id = $article->id; 


      //Snima sliku 

      $img = Image::make(Input::file('image')); 
      $destinationPath = $destinationPath.$fileName; 
      Image::make($img)->save($destinationPath); 

      // Snima sliku u manjem formatu thumb 

      $destinationPath = 'uploads/artiklislike/'; 
      $img = Image::make(Input::file('image')); 
      $destinationPath = $destinationPath.$nazivthumb; 
      Image::make($img)->resize(300, 200)->save($destinationPath); 
     } 
    } 

    return redirect('artikli')->with(['flash_message' => 'Uspiješno ste obrisali artikal!']); 
} 
+0

Не используйте модель внутри своих контроллеров. Внесите свои зависимости. –

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