karmendra
karmendra

Reputation: 2243

Form model binding laravel 5.1 for multiple models

I want Form model binding for multiple objects in laracollective's Form package? Something as following?

Form::model([$user,$vendors], array('route' => array('user.update', $user->id)))

Where can I request this feature?

Upvotes: 3

Views: 3373

Answers (1)

Gujarat Santana
Gujarat Santana

Reputation: 10564

I assume you're using Laravel-Collective, Unfortunately you cant do something like that. instead you can try something like this :

UPDATE

you can query all your model in your controller and combine them like this :

      $user = User::where('id',$user_id)->get();
      $vendor = Vendor::where('user_id',$user_id)->get();

      //merge two model
      $user = $user->merge($vendor);

      // return $user;
      return view('admin.users.edit', compact('user'))
          ->withTitle('Edit user');

and in your form call them like this :

{!! Form::model($user[1], ['route' => ['admin.users.update', $user],'method'=>'PUT']) !!}

    @include('admin.users._formEdit')

    <div>
      {!! Form::submit('Save user', ['class' => 'btn btn-primary']) !!}
    </div>
{!! Form::close() !!}

_formEdit.blade.php

<div class="form-group">
  {!! Form::label('first_name', 'First Name : ') !!}
  {!! Form::text('user[first_name]', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
  {!! Form::label('last_name', 'Last Name : ') !!}
  {!! Form::text('user[last_name]', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group ">
  {!! Form::label('email', 'Email : ') !!}
  {!! Form::email('user[email]', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group ">
  {!! Form::label('password', 'Password') !!}
  {!! Form::password('password', ['class' => 'form-control']) !!}
</div>

<div class="form-group ">
  {!! Form::label('vendor_name', 'vendor_name') !!}
  {!! Form::text('vendor_name', null,['class' => 'form-control']) !!}
</div>

OR ANOTHER SOLUTION

  1. create relation between model of your User and Vendor (one-to-one or one-to-many) example

User :

public function vendor(){
   return $this->hasOne('App\Vendor','user_id');
}

Vendor:

public function user(){
  return $this->belongsTo('App\User','user_id);
}


  1. Build your response query like this : $user = Vendor::with('user')->find($user_id);
  2. and then in your view template :

{!! Form::model($user, ...) !!} Vendor: {!! Form::text('vendor_name') !!} User: {{ Form::text('user[username]') }} {!! Form::close() !!}

Upvotes: 3

Related Questions