#mysql #sql #laravel
Вопрос:
Мне нужно где-то сохранить информацию о компании, и я решил создать таблицу под названием entreprise_info, в которой есть только 1 компания.
Я хочу знать, что является наилучшей практикой в этой ситуации.
Таблица, которую я создал:
class CreateEnterpriseInfosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('enterprise_infos', function (Blueprint $table) {
$table->id();
$table->string('name', 50);
$table->string('street_address', 50);
$table->string('postal_address', 50);
$table->string('phone', 17);
$table->string('fax', 17);
$table->string('logo_path', 50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('enterprise_infos');
}
}
Комментарии:
1. У меня была такая же ситуация, и я поступил так же, как и ты.
2. спасибо, что поделились.
3. Вам нужно объяснить больше… вы собираетесь хранить более 1 компании или это только для 1 компании, и все ?
4. Это всего лишь 1 компания, и все
5. Затем, это зависит от того, как вы собираетесь его использовать, собираетесь ли вы редактировать эти данные ? Будет ли это постоянным ? Если он будет постоянным, то создайте новый
config
файл и поместите его в эту папку, чтобы вы могли использовать его какconfig('company.name')
илиconfig('phone')
и т. Д. Кроме того, делая это, вы можете кэшировать его, так что не нужно все время читать его из файла.
Ответ №1:
В этом сценарии я перейду к двум столбцам в таблице
Имя таблицы : enterprise_infos
имя столбцов : setting_key| setting_value
ключевая колонка содержит street_address,postal_address,phone,faxlogo_path
Этот тип схемы позволяет не создавать новые столбцы при каждом введении нового ключа настройки
SQL
CREATE TABLE `enterprise_infos` (
`id` int(11) NOT NULL,
`setting_key` varchar(255) NOT NULL,
`setting_value` longtext DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `enterprise_infos` (`id`, `setting_key`, `setting_value`) VALUES
(1, 'name', NULL),
(2, 'street_address', NULL),
(3, 'postal_address', NULL),
(4, 'phone', NULL),
(5, 'fax', NULL),
(6, 'logo_path', NULL);