Помогите с выборкой из базы

J2
На сайте с 13.12.2011
Offline
46
547

Привет люди добрые! Помогите пожалуйста!

Не могу сообразить и не знаю как у гугла спросить.

Вообщем есть запрос к базе:

        $model_order = Model('order');

$condition = array();
$condition['order_state'] = ORDER_STATE_PAY;
$condition['payment_time'] = array('lt',TIMESTAMP - 7 * 86400);
$condition['order_type'] = 1;
$order_list = $model_order->getOrderList($condition, '', '*', '', 100);

В таблице есть поле payment_code как мне составить запрос если в поле стоит "offline", то данные не выводить? Может я вопрос неправильно сформулировал, если что строго не судите, спрашивайте поясню. Заранее благодарен.

https://mallinru.ru/ (https://mallinru.ru/)
S
На сайте с 30.09.2016
Offline
469
#1

$order_list - это массив? В нём есть элемент $order_list['payment_code']? Если это так, то

if($order_list['payment_code'] != 'offline'){ вывести данные; }

Но это если выводится единичный заказ. А если в этом $order_list много заказов, и надо оттуда выкинуть конкретные с 'offline' - то сложнее, надо знать структуру массива, чтобы гадалками не заниматься и не писать код "в общем виде". Надо просмотреть весь массив поэлементно и выкинуть выбранные элементы.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
J2
На сайте с 13.12.2011
Offline
46
#2

Код модели такой:


public function getOrderList($condition, $pagesize = '', $field = '*', $order = 'order_id desc', $limit = '', $extend = array(), $master = false){
$list = $this->table('orders')->field($field)->where($condition)->page($pagesize)->order($order)->limit($limit)->master($master)->select();
}
S
На сайте с 30.09.2016
Offline
469
#3
Jigan2:
если в поле стоит "offline"

А если не "offline", то "online"? Тогда просто добавьте строчку

$condition['payment_code'] = 'online';
Или что там ещё стоит.

А если там неизвестно что, то судя по вышеприведённой логике, как-то так:

$condition['payment_code'] = array('lt','gt','offline');
Оптимизайка
На сайте с 11.03.2012
Offline
396
#4

try add this before getOrderList:

$condition['payment_code'] = array('!=', 'offline');

or:

$condition['payment_code'] = array('ne', 'offline');

or:

$condition['payment_code'] = array('<>', 'offline');

or tell what ORM are you using :)

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
J2
На сайте с 13.12.2011
Offline
46
#5
Оптимизайка:
try add this before getOrderList:

$condition['payment_code'] = array('!=', 'offline');

or:

$condition['payment_code'] = array('ne', 'offline');

or:

$condition['payment_code'] = array('<>', 'offline');

or tell what ORM are you using :)

Спасибо!


protected $comparison = array('eq'=>'=','neq'=>'<>','gt'=>'>','egt'=>'>=','lt'=>'<','elt'=>'<=','notlike'=>'NOT LIKE','like'=>'LIKE','in'=>'IN','not in'=>'NOT IN');

Нужно было так

$condition['payment_code'] = array('notlike', 'offline');

S
На сайте с 30.09.2016
Offline
469
#6

А может быть, так?

$condition['payment_code'] = array('neq', 'offline'); 
J2
На сайте с 13.12.2011
Offline
46
#7
Sitealert:
А может быть, так?
$condition['payment_code'] = array('neq', 'offline'); 

Так тоже работает! Китайцы мутят)))

S
На сайте с 30.09.2016
Offline
469
#8
Jigan2:
Так тоже работает! Китайцы мутят)))

Да нет, просто NOT LIKE ищет по шаблону, всё, что похоже на offline - offline123, offlineasd, offliner2e и т.д. А '<>' устанавливает конкретно "не равно".

J2
На сайте с 13.12.2011
Offline
46
#9

Понятно. Благодарю за разяснение

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий