Я работаю над запросом, в котором я извлекаю данные из нескольких таблиц, используя левые соединения, например:
$query = "
SELECT
users.name,
users.email,
address.street,
address.city,
address.state,
address.zip
FROM users
LEFT JOIN(
SELECT
addresses.street,
addresses.city,
addresses.state,
addresses.zip,
`addresses.user_id `
FROM addresses
)
AS address
ON users.id = `address.user_id`
WHERE users.id = 1";
$mysql = new mysql(HOST, USER, PASS, DBNAME);
$result = $mysql->query($query)->fetch_object();
Результаты, которые я получаю сейчас, я могу получить доступ к таким результатам:
// get name
$result->name;
//get street address
$result->street;
Поскольку запрос со временем станет чем-то более сложным, чем этот. Я хотел бы иметь возможность доступа к данным, как это:
// get user name
$result->user->name;
// get the street address
$result->address->street;
Это поможет упростить чтение данных, поскольку некоторые таблицы имеют поля с одинаковыми именами.
Любая помощь будет большой благодарностью.
<ч />
РЕДАКТИРОВАТЬ: (в ответ на Стив)
Я знаком с ORM, и в настоящее время я использую фреймворк Kohana. Я заинтересован в том, чтобы сократить количество выполняемых запросов.
ORM в структуре Kohana вызывает «SELECT *» для каждой таблицы / модели, которую вы вызываете. Я бы предпочел не делать этого, если мне не нужно.
Выполнение двух отдельных запросов (как показано в примере) не такая уж большая проблема, но в моем реальном примере я собираю данные из примерно 10 отдельных таблиц, поэтому я бы не хотел запускать отдельные запросы функциональность, которую я описывал