2017-01-09 4 views
3

Я следовал за документом Joomla о том, как выбирать данные из одной таблицы. Мне нужны 3 условия.Выбор записей при условии - Joomla

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select($db->quoteName(array('column1', 'column2', 'column3'))); 
$query->from($db->quoteName('#__table_example')); 

$query->where($db->quoteName('column1') . ' LIKE '. $db->quote('condition1')); 
OR where column2 == condition2 
... 

Как сделать, где заявление со многими ORs в моем примере? Я не нашел ни одной темы по правильности синтаксиса.

ответ

1

Вы просто должны добавить или условия в том же, где оператор:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select($db->quoteName(array('column1', 'column2', 'column3'))); 
$query->from($db->quoteName('#__table_example')); 

$query->where($db->quoteName('column1') . ' LIKE '. $db->quote('condition1') . ' OR ' . $db->quoteName('column2') . ' LIKE '. $db->quote('condition2') . ' OR ' . $db->quoteName('column3') . ' LIKE '. $db->quote('condition3')); 
1

я дать общий ответ, который будет охватывать не только ИЛИ, но и несколько И проблемы. Используйте WHERE запрос так: например: запрос должен работать, если один из (COND1 или cond2 или cond3) верно и один из (cond4 или cond5 верно):

$query->where(((cond1)OR(cond2)OR(cond3)) AND ((cond4)OR(cond5))); 

Таким образом, вы можете использовать ИЛИ и И любой, как вам нравится, просто убедитесь, что вы правильно используете (), чтобы определить свое состояние.

В вашем конкретном случае, вы будете использовать формат, как это:

$query->where((var LIKE cond1) OR (cond2)); 

, очевидно, ваш cond2 является: column2 == condition2

Я надеюсь, что это решает путаницу.

Смежные вопросы