Я только начал с doctrine / symfony и столкнулся со следующей проблемой:
Фон
У меня 3 объекта:
- Конечно
- Цены
- Скидки
Каждый курс связан с ценой. Цену можно использовать для нескольких курсов. Для каждой цены предусмотрены разные скидки (ожидаемые на дату бронирования).
Что я сделал:
Я добавил функцию в объект курса, чтобы получить текущую цену
class Course {
// Remark: I will skip the doctine annontation in this example
// properties corresponding to database
private $name
private $basicprice
[...]
// getters and setters for the properties
[...]
// getter to related entities
public function getPricing() {...}
// additional functions
public function getCurrentPrice() {
dump($this->getPricing());
dump($this->getPricing()->getName());
dump($this->getPricing());
$discounts = $this->getPricing()->getDiscounts(); // <-- BIG ERROR
// +++ do some magic logic +++
$currentDiscount = magic();
$currentPrice = $this->getBasicPrice() - $currentDiscount;
return $currentPrice;
}
}
Что я хочу:
Объект курса хранится в СЕССИИ и теперь должен быть обработан
class BookingController extends AbstractController {
[...]
public function index() {
$session = new Session();
$course = $session->get('course')
$price = $course->getCurrentPrice();
[...]
}
}
Проблема
Пока я могу получить ЦЕНУ и СКИДКИ с другими контроллерами, я предполагаю, что проблема в использовании SESSION.
Я не получаю СКИДКИ (ошибка), но проблема в том, что я думаю, что уже на уровне ЦЕНЫ. См. DUMP:
Course.php on line 68:
Proxies\__CG__\App\Entity\Pricing {#948 ▼
+__isInitialized__: false
-id: 456
-name: null
-createdAt: null
-updatedAt: null
-courses: null
-discounts: null
…2
}
Course.php on line 69:
null
Course.php on line 70:
Proxies\__CG__\App\Entity\Pricing {#948 ▼
+__isInitialized__: false
-id: 456
-name: null
-createdAt: null
-updatedAt: null
-courses: null
-discounts: null
…2
}
Вопросы
- Правильно ли размещена эта дополнительная функция в классе курса? Или нужно go в подкласс Course-Class?
- Почему я не получаю нужные данные уже на уровне PRICING?
Большое спасибо за ваши идеи !!!