2010-12-02 2 views
0

Я использую Kohana 3.x. У меня есть простой запрос для извлечения объектов из моей базы данных MySQL:Kohana 3.x: SQL-запрос для сущностей и всех их членов

$query = DB::query(Database::SELECT, "SELECT * FROM myEntity WHERE foreignKey = {$myForeignKey};"); 
$result = $query->execute($this->database); 
$resultArray = $result->as_array(); 

Работает так, как ожидалось. My $ resultArray содержит столько объектов, сколько там, где сущности соответствуют запросу. Каждый объект в $ resultArray является словарем, содержащим свойства как пары kex-value.

Но теперь я хотел бы получить для каждого «myEntity» все свои атрибуты-члены! Сейчас я использую PHP-для-цикл вроде так:

foreach ($resultArray as $entity) { 
    $query = DB::query(Database::SELECT, "SELECT * FROM member WHERE foreignKey = {$entity['id']};"); 
    $result = $query->execute($this->database); 
    $memberArray = $result->as_array(); 
    // do something with the memberArray.. 
    } 

Я предполагаю, что это глупо делать другой SQL-запрос для каждого «MyEntity» Объект, и я бы предпочел бы сделать один запрос получить все «myEntities» плюс всех участников для каждого из «myEntities». Но как я могу это сделать?

+0

Вы можете присоединиться к двум таблицам вместе, чтобы получить результат в одном запросе. – 2010-12-02 23:34:40

ответ

0

Можете ли вы попробовать это и посмотреть, дает ли он результат, который вы хотите?

SELECT * FROM myEntity 
join member on member.foreignKey = myEntity.foreignKey 
WHERE myEntity.foreignKey = {$myForeignKey}; 
+0

, вы можете заменить * на список конкретных столбцов из обеих таблиц, которые вы хотите получить в своем результате. – 2010-12-02 23:39:24