Database design 键/值对类型表的最佳实践
我的应用程序是一个CMS的商业网站的目的。我有一个名为business_info的表,如下所示:Database design 键/值对类型表的最佳实践,database-design,orm,laravel,eloquent,laravel-3,Database Design,Orm,Laravel,Eloquent,Laravel 3,我的应用程序是一个CMS的商业网站的目的。我有一个名为business_info的表,如下所示: id | field | value ----------------------------------------- 1 | name | Testing Company 2 | official name | Testing Company LLC 3 | main_location | The Bay Area 4 | year
id | field | value
-----------------------------------------
1 | name | Testing Company
2 | official name | Testing Company LLC
3 | main_location | The Bay Area
4 | year | 1999
5 | address | 55 Street Rd
6 | suite | Unit 5
7 | city | Anytown
8 | state | CA
9 | zip | 55555
10 | tollfree | 1(888) 555-5555
我认为当前的雄辩模型无法有效地管理这些信息,因此我对其进行了扩展,并开始研究一个更有用的模型。我希望能够做到以下几点:
$business_info->zip = "66666";
$business_info->save();
这是我目前所掌握的,但我不确定如何继续:
class Business_Info extends Eloquent
{
public static $table = 'business_info';
public static function all()
{
$business_info_rows = with(new static)->query()->get();
foreach ($business_info_rows as $business_info_row)
{
$business_info[$business_info_row->attributes['field']] = $business_info_row->attributes['value'];
}
return $business_info;
}
public function __set($key, $value)
{
}
}
也许有人可以就如何继续或另一种方法提供一些建议?谢谢 您的做法是正确的,尤其是重写
\u集
魔术方法。基本上,对于这个特定的模型,您希望该方法看起来像这样
public function __set($key, $value)
{
$this->set_attribute('field', $key);
$this->set_attribute('value', $value);
}
当您执行类似于$business\u info->zip=“12345”的操作时,将字段和值列设置为各自的值代码>
至于获取所有业务信息,您真的只想返回一个数据数组吗?我可能会制定一种新的方法来实现这一点,并保持原样。但我觉得你所拥有的一切都很好。在laravel 5中,我得到了“BadMethodCallException”异常,“调用未定义的方法Illumb\Database\Query\Builder::set_attribute()”。这与拉威尔5号有关吗。如果不是,如何在laravel 5中实现这一点?