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

Я пытаюсь сделать модель привязки в edit.blade.php однако, имя поля в базе данных host_firstname отличается от имени поля формы host-firstname
Итак, данные из базы данных не отображаются в поле при запуске. (и я не хочу менять имя поля данных в моем представлении тоже)

Я очень новичок в Laravel, и я не уверен, как установить имя ключа по умолчанию в модели, чтобы он работал. У кого-нибудь есть какие-то решения для этого?

Схемы базы данных

  family_general_id int(10) unsigned NOT NULL AUTO_INCREMENT,

host_firstname varchar(255) COLLATE utf8_unicode_ci NOT NULL,

host_lastname varchar(255) COLLATE utf8_unicode_ci NOT NULL,

edit.blade.php

 {!! Form::model($survey, ['method' => 'PATCH', 'url' => 'surveys/' . $survey->family_general_id]) !!}
<!-- Host-firstname Form Input-->
<div class="form-group">
{!! Form::label('host-firstname', 'Firstname:') !!}
{!! Form::text('host-firstname', null, ['class' => 'form-control']) !!}
</div>

<!-- Host-lastname Form Input-->
<div class="form-group">
{!! Form::label('host-lastname', 'Lastname:') !!}
{!! Form::text('host-lastname', null, ['class' => 'form-control']) !!}
</div>
{!! Form::close() !!}

1

Решение

Я не уверен, возможно ли это в данный момент.
Я посмотрел на Illuminate / Html / FormBuilder, как вы можете видеть transformKey() работает только с under_scores

/**
* Get the model value that should be assigned to the field.
*
* @param  string  $name
* @return string
*/
protected function getModelValueAttribute($name)
{
if (is_object($this->model))
{
return object_get($this->model, $this->transformKey($name));
}
elseif (is_array($this->model))
{
return array_get($this->model, $this->transformKey($name));
}
}

protected function transformKey($key)
{
return str_replace(array('.', '[]', '[', ']'), array('_', '', '.', ''), $key);
}

Решение, которое я могу предложить вместо этого использовать базовый конструктор форм laravel, поскольку это особый случай:

{!! Form::open(['method' => 'PATCH', 'url' => 'surveys/' . $survey->family_general_id]) !!}
<!-- Host-firstname Form Input-->
<div class="form-group">
{!! Form::label('host-firstname', 'Firstname:') !!}
{!! Form::text('host-firstname', null, ['class' => 'form-control']) !!}
</div>

<!-- Host-lastname Form Input-->
<div class="form-group">
{!! Form::label('host-lastname', 'Lastname:') !!}
{!! Form::text('host-lastname', null, ['class' => 'form-control']) !!}
</div>
{!! Form::close() !!}

Затем сделайте что-то вроде:

class SurveyController extends Controller
{
//after validation
$host_firstname = Input::get('host-firstname');

//send this to your database $host_firstname
$survey = new Survey;

$survey->host_firstname = $host_firstname;

$survey->save();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]