У меня есть SQL
запрос:
select *
from locations
left join (select location_id, name as occupied
from meetings
where start < $value1 and end > $value2 limit 1) m
on locations.id = m.location_id;
Каждое место из таблицы locations
имеет много собраний, и каждое собрание относится к определенному месту. У каждой встречи есть время начала и время окончания. С помощью этого запроса я хочу получить все местоположения из базы данных и добавить столбец booked
для всех, и, если местоположение занято в данном интервале, значение столбца occupied
будет именем перекрывающегося собрания.
Запрос SQL
возвращает именно то, что я хочу (например, Location 1, Location 2, Location 3, etc
).
Я хочу использовать тот же запрос, но в моей модели ZEND. Теперь у меня есть
$model = new Model_Location();
$m = new Model_Meeting();
$model->getSelect()
->joinLeft(
"meetings as m",
"m.location_id = $model.id AND m.start < $value1 AND m.end > $value2",
array('occupied' => "m.name"));
, который возвращает то, что я ожидаю, но для каждого перекрывающегося собрания я получаю запись, это lcoation, в результате чего Location 1, Location 1, Location 2, Location 2, Location 2, Location 3, etc
. Как я могу получить только отдельные значения? Я знаю, что limit
нет в моем Zend-запросе, но я не знаю, где его использовать. Я пробовал после joinLeft
и до него, но в тех случаях это ограничивает мою модель только одной записью, а не только отдельными. Я также пробовал ->distinct()
, но тоже не работал.