Как прочитать данные из двух таблиц одновременно?

Как прочитать данные из двух таблиц одновременно в одно методе по условию?

Для примера есть модель материала и метод чтения всех записей и вывод в json формате.

   <?php
    class Freeroll {
    
        // подключение к базе данных и таблице "freeroll"
        private $conn;
        private $table_name = "freeroll";
    
        // свойства объекта
        public $category_name;
        public $id;
        public $name_turnament;
        public $prize;
        public $password;
        public $data;
        public $time;
        public $category_id;
        public $buyin;
        public $buyin_symbol;
        public $prize_symbol;
    
        // конструктор для соединения с базой данных
        public function __construct($db){
            $this->conn = $db;
        }
    
        // метод read() - получение товаров
    function read() {
    
        // выбираем все записи
        $query = "SELECT * FROM " . $this->table_name . " ORDER BY id";
    
        // подготовка запроса
        $stmt = $this->conn->prepare($query);
    
        // выполняем запрос
        $stmt->execute();
    
        return $stmt;
    }
    }

Сам метод read.php

<?php
// необходимые HTTP-заголовки
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");

// подключение базы данных и файл, содержащий объекты
include_once "../config/database.php";
include_once "../models/freeroll.php";

// получаем соединение с базой данных
$database = new Database();
$db = $database->getConnection();

// инициализируем объект
$freeroll = new Freeroll($db);
// установим свойство ID записи для чтения
 
// запрашиваем товары
$stmt = $freeroll->read();
$num = $stmt->rowCount();

// проверка, найдено ли больше 0 записей
if ($num>0) {

    // массив товаров
    $freeroll_arr = array();
    $freeroll_arr['status'] = 'ok';
    $freeroll_arr['totalResults'] = $num;
    $freeroll_arr["freeroll"] = array();

    // получаем содержимое нашей таблицы
    // fetch() быстрее, чем fetchAll()
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

        // извлекаем строку
        extract($row);

        $freeroll_item = array(
            "id" => $id,
            "name_turnament" => $name_turnament,
            "prize" => $prize,
            "password" => $password,
            "data" => $data,
            "time" => $time,
            "category_id" => $category_id,
            "buyin" => $buyin,
            "buyin_symbol" => html_entity_decode($buyin_symbol),
            "prize_symbol" => html_entity_decode($prize_symbol)
        
        );

        array_push($freeroll_arr["freeroll"], $freeroll_item);
    }

    // устанавливаем код ответа - 200 OK
    http_response_code(200);

    // выводим данные о товаре в формате JSON
    echo json_encode($freeroll_arr);
} else {

    // установим код ответа - 404 Не найдено
    http_response_code(404);

    // сообщаем пользователю, что товары не найдены
    echo json_encode(array("message" => "Freeroll list not found."), JSON_UNESCAPED_UNICODE);
}

В нем мы получаем public $category_id; это id категории. Как мне получить запись из таблицы категорий по полученному id и вставить её в массив $freeroll_item в месте с записью материала? так же непосредственно есть модель категории category.php и её метод read.php


Ответы (0 шт):