разные приращения каждый раз, когда я создаю - PullRequest
0 голосов
/ 28 февраля 2020

поэтому у меня есть эта таблица. Я хочу создать проект с другим идентификатором, но он должен быть в одной таблице, поэтому я создаю 2 разных типа идентификатора.

|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|

, если я создаю проект с idtype1, приращение idtype1, но idtype2 по-прежнему

|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
| 1 |    1    |    0    |     name1    |
| 2 |    2    |    0    |     name2    |
|--------------------------------------|

но если я создаю проект с idtype2, это делает наоборот

|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
| 1 |    1    |    0    |     name1    |
| 2 |    2    |    0    |     name2    |
| 3 |    0    |    1    |     name3    |
| 4 |    0    |    2    |     name4    |
|--------------------------------------|

возможно ли это? и как?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2020

Похоже, вы хотите, чтобы три столбца: id, idtype1 и idtype2, чтобы все автоматически увеличивались? Если это так, вы можете определить это при переносе с помощью $ table-> increments ('idtype1'); как описано в https://laravel.com/docs/master/migrations. Тем не менее, стоит отметить, что все три столбца всегда будут иметь одинаковые значения, поэтому вы можете переосмыслить, почему вы хотите, чтобы все три столбца.

idtype1 и idtype2 очень расплывчаты и не передать любое значение. Что они представляют? Вещи улучшатся, если вы сможете передать то, что они представляют, от их имени.

Являются ли эти идентификаторы связанных записей в других таблицах? Если это так, вы должны назвать их с другим именем таблицы, например, type_id или address_id.

Затем вы также можете настроить информацию о внешнем ключе, чтобы база данных знала об этих отношениях и помогла вам обеспечить целостность.

0 голосов
/ 28 февраля 2020

Вы не можете сделать AUTO_INCREMENT здесь, потому что иногда idType1 нужно увеличивать, а 2 - нет. Итак, в ваших миграциях выполните:

$table->Integer('idType1');
$table->Integer('idType2');

Когда зарегистрируете новый проект, при необходимости вычислите +1 в соответствующем столбце.

EDIT # 1

if (project_type == 1) {
       DB::table('projects_controller')->increment('idType1');
} elseif (project_type == 2) {
       DB::table('projects_controller')->increment('idType2');
} etc etc

Надежда это помогает.

...