No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

57 líneas
1.1KB

  1. <?php
  2. namespace Framework\Database;
  3. use Framework\Database\QueryBuilder\QueryBuilder;
  4. class ModelCollector
  5. {
  6. private QueryBuilder $builder;
  7. private string $class;
  8. public function __construct(QueryBuilder $builder, string $class)
  9. {
  10. $this->builder = $builder;
  11. $this->class = $class;
  12. }
  13. public function __call(string $method, array $parameters = []): mixed
  14. {
  15. $result = $this->builder->$method(...$parameters);
  16. // in case it's a fluent method...
  17. if ($result instanceof QueryBuilder) {
  18. $this->builder = $result;
  19. return $this;
  20. }
  21. return $result;
  22. }
  23. public function first()
  24. {
  25. $class = $this->class;
  26. $row = $this->builder->first();
  27. if (!is_null($row)) {
  28. $row = $class::with($row);
  29. }
  30. return $row;
  31. }
  32. public function all()
  33. {
  34. $class = $this->class;
  35. $rows = $this->builder->all();
  36. foreach ($rows as $i => $row) {
  37. $rows[$i] = $class::with($row);
  38. }
  39. return $rows;
  40. }
  41. }

Powered by TurnKey Linux.