Size: a a a

2020 September 07

MS

Morning Star in OctoberCMS
заработало
источник

P

PVL in OctoberCMS
Помогу начать писать логику:
$collection = Model::where()->select('id', 'customer_id', 'season_id')->get();

$customers = Model::select('customer_id')->get()->toArray();
$arr_customer_id = array_flatten($customers); // массив всех customer_id

$seasons = Model::select('season_id')->get()->toArray();
$arr_season_id = array_flatten($seasons); // массив всех season_id


$collection->each(function ($item, $key) {
   
   if ( in_array($item, $arr_customer_id) ) {
       // код ...
   }
   
   if ( in_array($item, $arr_season_id) ) {
       // код ...
   }
});
источник

P

PVL in OctoberCMS
Смысл - получаем коллекцию всех моделей с полями над которыми будем работать.
Так же получаем два массива айдишников полей.
источник

P

PVL in OctoberCMS
В итоге нужно циклом пройти коллекцию и определить совпадения.
источник

P

PVL in OctoberCMS
Вот цикл который я написал - нужно проверять.
источник

P

PVL in OctoberCMS
и совпадений должно быть как минимум два, потому что одно всегда будет.
источник

v

vladimir in OctoberCMS
MihailBishkek
вот к вопросу выше, как выбрать все такие записи, где есть 2 и более совпадений?..
Например:
Model::groupBy('customer_id', 'season_id')->havingRaw('COUNT(*) > 1')->get()


Использовать group ... having для выборки средствами бд
источник

P

PVL in OctoberCMS
vladimir
Например:
Model::groupBy('customer_id', 'season_id')->havingRaw('COUNT(*) > 1')->get()


Использовать group ... having для выборки средствами бд
+ круто!
источник

A

Axenia in OctoberCMS
WebVPF (257.19) увеличил карму LeMaX10 (1768.1)
источник

v

vladimir in OctoberCMS
PVL
+ круто!
оу, только твое решение увидел... Это перебор)))
Могу рассказать как его улучшить в чем его проблема, если интересно))
источник

M

MihailBishkek in OctoberCMS
PVL
Помогу начать писать логику:
$collection = Model::where()->select('id', 'customer_id', 'season_id')->get();

$customers = Model::select('customer_id')->get()->toArray();
$arr_customer_id = array_flatten($customers); // массив всех customer_id

$seasons = Model::select('season_id')->get()->toArray();
$arr_season_id = array_flatten($seasons); // массив всех season_id


$collection->each(function ($item, $key) {
   
   if ( in_array($item, $arr_customer_id) ) {
       // код ...
   }
   
   if ( in_array($item, $arr_season_id) ) {
       // код ...
   }
});
+
источник

A

Axenia in OctoberCMS
MihailBishkek (754.45) увеличил карму WebVPF (284.66)
источник

P

PVL in OctoberCMS
vladimir
оу, только твое решение увидел... Это перебор)))
Могу рассказать как его улучшить в чем его проблема, если интересно))
нет, не нужно объяснять. Понятно что перебор, но это всего набросок на пути к решению.
источник

M

MihailBishkek in OctoberCMS
vladimir
Например:
Model::groupBy('customer_id', 'season_id')->havingRaw('COUNT(*) > 1')->get()


Использовать group ... having для выборки средствами бд
+
источник

A

Axenia in OctoberCMS
MihailBishkek (754.45) увеличил карму LeMaX10 (1795.57)
источник

P

PVL in OctoberCMS
сразу понятно что несколько раз идём по одним и тем же элементам
источник

v

vladimir in OctoberCMS
PVL
сразу понятно что несколько раз идём по одним и тем же элементам
Есть просто изящнее вариант в 3 строки 🙂
источник

v

vladimir in OctoberCMS
Коллекции laravel, метод unique
источник

P

PVL in OctoberCMS
цикл while ?
источник

v

vladimir in OctoberCMS
PVL
цикл while ?
Model::all('id', 'customer_id', 'season_id')->unique(static function($item): bool {
   return $item['customer_id'].$item['season_id'];
});
источник