Ste*_*ess 1 php mysql laravel eloquent laravel-4
我正在努力找到解决问题的最佳方案.
基本上我有一个表单,主要由复选框组成,但表单将有60-90个复选框.我将有一些这样的形式,所以我遇到的问题是如何以最通用或简单的方式创建它,所以我不必手动为每个表创建每个表单.
我的解决方案是简单地创建一个表格,这里是我得到一个包含大约90列的表,在任何客户端中查看都非常混乱,并且随着表的增长对性能有一点影响但是因为大多数字段类型都没有那么多是tinyint.
在我的模型中,我基本上定义了一个数组:
$schema = array(
'column_name' => array('checkbox(input field type)', 'label')
);
public function getSchema()
{
$this->schema['column_name]['value'] = $this->column_name;
// .. Now I have to type this 100 times by hand..
}
Run Code Online (Sandbox Code Playgroud)
这现在允许我只有1个表单并轻松生成所有字段
<form>
@foreach($schema as $field => $attrs)
@if($attrs[0] == 'checkbox')
<input type="checkbox" name="{{ $field }}" value="{{ $attrs['value'] }} {{ ($attrs['value'] == 1) ? 'checked' : '' }}>{{ $attrs[1] }}
@elseif($attrs[0] == 'text')
...
@endif
@endforeach
</form>
Run Code Online (Sandbox Code Playgroud)
所以这是一个非常优雅的解决方案,但是如果我必须在getSchema()函数中为每个字段定义它们的值,或者我必须首先定义模式数组,最后就好像我定义了两个表单,我真的没那么多.
我想我在这里找到了一些解决方案,但不完全知道如何摆脱手动定义架构数组和方法.
我的一个想法就是只有一个字段值并在我的模型中定义局部变量,在执行IO并序列化对象并存储它时填充这些,但这似乎是浪费和糟糕的做法.
小智 6
只需创建一个包含4列的新表
++++++++++++++++++++++++++++++++++++++++
id + entity_id + form_key + form_value
++++++++++++++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)
这样,您的所有值都将被编入索引,并且更易于管理.