Laravel background jobs

C++ JAVA
Post Reply
User avatar
Revelation
Потребител
Потребител
Posts: 776
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Fri Apr 27, 2018 6:55 pm

Ти я направи пък. :D

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Tue May 01, 2018 5:55 am

До тука всичко е ок, обаче закъсах с цените на сградите. Имам предвид че искам различните сгради да струват повече от един вид ресурс.

Пример:
Златна мина:
* Ниво 1 - 50 злато
* Ниво 2 - 50 злато и 50 камъни
* Ниво 3 - 100 камъни 50 желязо

Някакви идеи?

User avatar
anonimen
Много Редовен
Много Редовен
Posts: 1523
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 162
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Tue May 01, 2018 6:10 pm

Към реда на съответната сграда в таблицата с нивата добави полета за цените - price_stone, price_gold. price_steel.

Ако е ясно, че няма да има други ресурси, това е най-удобния вариант.
Ако често сменяш видове ресурси може би ще трябва да извадиш цените в отделна таблица с колони примерно:
element_id [id към таблицата с нивата на сградите]
price_type [ enum 'stone'/'gold'/'steel' ]
price_value int

Но ако ще са само 3 веднъж завинаги, ще ти е по-удобно да си ги държиш като колони в таблицата с нивата.

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Wed May 02, 2018 5:00 am

Да ги държа в таблицата с нивата мисля че няма да се получи, защото ново id се създава само при нов юзър, а нивата се ъпдейтват. Дори да добавя още полета няма да може да е различна цената за всяко ниво.

Пример:
Таблица с нивата:
* user_id - 1
* gold_mine - 0
* iron_mine - 0
* stone_mine - 0

Дори да направя още една таблица пак не виждам как ще определям цената за всяка мина и всяко ниво. За да стане май трябва да направя отделна таблица за всяка мина, която да е попълнена според това колко нива ще имам, например 10.

Може и да греша тотално, което няма да е невероятно :D .

User avatar
Revelation
Потребител
Потребител
Posts: 776
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Wed May 02, 2018 11:58 am

Не е нужно. В една таблица слагаш данните за всяко ниво на всяка сграда.

[sql]
building_id
level
price_gold
price_stone
price_iron
[/sql]

Като building_id и level могат да са ти индекси.

Така, когато строиш взимаш id на текущата сграда и текущото ниво на сградата + 1 и взимаш данните.

Така или иначе, ако нямаш формула за някакво експоненционално увеличение на ресурсите, ще трябва да си направиш таблица.

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Wed May 02, 2018 12:05 pm

Нещо не можах да схвана идеята. Как ще изведа цената за всяка мина на всеки юзър ако е съставена от повече от един ресурс?

User avatar
Revelation
Потребител
Потребител
Posts: 776
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Wed May 02, 2018 12:18 pm

В тази примерна таблица записваш данните на всяка сграда, която имаш, като за съответното ниво записваш колко ресурс да иска. Следователно, ако искаш 2 ресурса за определено ниво, просто пишеш 0 на мястото на конкретния ресурс.
В отделна таблица си записваш за всеки потребител нивото на сградите.

Нужни ресурси на ниво на сграда
[sql]
building_id
level
price_gold
price_iron
price_stone
[/sql]

Нива на сградите за потребителите
[sql]
user_id
building_id
level
[/sql]

Сгради
[sql]
id
building_name
[/sql]

Така много лесно можеш обработваш данните.

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Wed May 02, 2018 12:47 pm

Значи това са три таблици?

User avatar
Revelation
Потребител
Потребител
Posts: 776
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 57

Post by Revelation » Wed May 02, 2018 12:54 pm

Ами да. Никога не прави всичко в една таблица. Прочети, ако трябва някъде за дизайн и нормализация на база данни.

User avatar
teroristd
Много Редовен
Много Редовен
Posts: 1769
Joined: Thu Feb 18, 2010 11:50 am
Answers: 83

Post by teroristd » Wed May 02, 2018 1:56 pm

Добре аз ги направих таблиците, обаче не мога да схвана нещо как ще се попълват. Ще дам пример с таблицата която имах до сега. При регистрация на нов юзър автоматично попълвах id-то и левелите, които после само ъпдейтвах. Един вид нов запис се прави само при нов юзър.


[sql]
Пример:
Таблица с нивата:
* user_id - 1
* gold_mine - 0
* iron_mine - 0
* stone_mine - 0
[/sql]

Сега да вземем за пример едната от новите таблици.

[sql]
user_id
building_id
level
[/sql]

Тука на building_id трябват три записа също и на level ако правилно разбирам?

Би ли обяснил по-подробно как да работя с тези таблици.

Post Reply