Я создаю приложение PHP с использованием Laravel 4.2. Приложение позволяет пользователю посещать веб-сайт и отправлять уникальный код. Когда код отправляется, они получают вознаграждение, которое они заработали. Награды могут отличаться от таких вещей, как «10% от вашей следующей покупки», «Бесплатная футболка», «Бесплатная доставка при следующей покупке» и т. Д.Хранение данных в базе данных по классу
У меня есть модель Code
в моей заявке, которая является модель для уникального кода, который пользователь изначально представляет. Итак, первым шагом в приложении является проверка кода, который они отправили, убедитесь, что он существует в базе данных, и затем ответьте на список возможных вознаграждений, на которые они имеют право.
Моя первая мысль состоит в том, чтобы иметь Reward
и таблицу rewards
для хранения доступных вознаграждений в базе данных, а затем просто представлять соответствующие данные пользователю после отправки их уникального кода. Нечто подобное в моем шаблоне:
<ul>
@foreach($rewards as $reward)
<li>{{ $reward->name }}</li>
<li>{{ $reward->value }}</li>
<li>{{ $reward->redemption_instructions }}</li>
@endforeach
</ul>
Однако, сейчас я думая, что это будет на самом деле быть более удобным для меня, чтобы каждая награда создана как его собственный класс. Таким образом, я могу создать как можно больше пользовательских функций для каждого типа вознаграждения, сколько мне нужно. Так, например, каждый класс вознаграждения должен иметь метод, называемый display()
, который выводит необходимый html для отображения вознаграждения пользователю. В этом случае, мои шаблоны будет выглядеть примерно так:
<ul>
@foreach($rewards as $reward)
<li>{{ $reward->display() }}</li>
@endforeach
</ul>
Я пытаюсь выяснить, как настроить систему так, что они функционируют таким образом. Я планирую создать классы для хранения информации, необходимой для каждой награды. Например, это может выглядеть так:
class TenPercentOffNextOrderReward {
private $name = '10% Off Your Next Order';
private $description = 'Take 10% off your next order on our website!';
public function createCoupon() {
// create a coupon for this reward
}
}
class FreeShirtReward {
private $name = 'Free T-Shirt';
private $description = 'Get a free t-shirt!';
public function sendShirt() {
// send tshirt to customer
}
}
Итак, как вы можете видеть, каждый тип вознаграждения будет иметь разную функциональность. Это лучший способ справиться с этим типом настройки? Должна ли моя таблица rewards
просто хранить разные имена классов для всех наград? Мне даже нужна таблица rewards
?
Старайтесь избегать этих вопросов, основанных на мнениях; они считаются вне темы для переполнения стека. При этом я хотел бы использовать для этого одну таблицу/модель, присоединить таблицу к коду, чтобы один код мог иметь много наград. –