I'm new to Laravel but getting there with it. I've got an issue with Form Model binding, I've set the form model to bind and set the data in my Database, But the field is not populating to match.
I suspect, I've missed something obvious, Although not sure.
My current code is :
Route
Route::get('admin/user/bank-details', array('as' => 'bank.edit', function()
{
$user_id = Auth::id();
$bank_details = Banks::whereRaw("(user_id = '".$user_id."')")->get();
// Return Our View...
return View::make('user.update_bank')
->with('bank_details', $bank_details);
}));
View
{ Form::model($bank_details, array('route' => 'bank.edit')) }}
<div class="form-group">
<label for="bank_sortcode">Bank Sortcode</label>
{{ Form::text('bank_sortcode', null, array('class' => 'form-control sortcode', 'placeholder' => 'Bank Sort Code')) }}
</div><!-- /.form-group -->
{{ Form::close() }}
Model
class Banks extends \Eloquent {
// Don't forget to fill this array
protected $fillable = array('bank_sortcode');
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
protected $primaryKey = "bank_id";
}
My Database table contains a field titled bank_sortcode and its value is currently set as "20-20-20"
Thanks
You can only populate a form with a single model. So change
$bank_details = Banks::whereRaw("(user_id = '".$user_id."')")->get();
to this
$bank_details = Banks::where('user_id', $user_id)->first();
Using this function you only get one record (not an array of records) - so it should work then.
p.s. you should only ever use raw
eloquent queries in very very very raw circumstances. Otherwise you are creating security risks unnecessarily.