class Order extends Model
{
// ... Тут стандартное начало модели
protected $appends = [
'status_color'
];
public function getStatusColorAttribute() {
switch($this->status) {
case 1:
return 'зелёный';
break;
case 2:
return 'синий';
break;
case 3:
return 'красный';
break;
default:
return 'хз';
break;
}
}
}
$res = R::getAll('SELECT * FROM `table`');
// <table>
$i = 0;
foreach($res as $item) {
if($i <= 0) {
// <tr>
foreach ($item as $key => $val) {
// Тут печатаем заголовки таблицы - переменная $key
// <td>$key</td>
}
// </tr>
}
// <tr>
foreach ($item as $key => $val) {
// Тут печатаем остальные данные таблицы - переменная $val
// <td>$val</td>
}
// </tr>
$i++;
}
// </table>
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`count` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test` (`name`) VALUES ('строка')
ON DUPLICATE KEY
UPDATE `count` = `count` + 1;
Можно например использовать Redis (increment)...
Где ключ будет "строка" (в данном случае kot например).
Перед записью ныряем в Redis, подкручиваем "счётчик" и далее берем это значение и записываем в MySQL в поле slug:
kot-ЗНАЧНИЕ_СЧЁТЧИКА
В итоге один запрос в Redis и один INSERT в MySQL...
Понятна мысля?)
P.S.: Redis можно и на MySQL тож заменить...используя мой первый вариант в ответе в качестве счётчика вместо Redis'а...но тут на пару запросов больше выйдет...что и не критично в данном случае думаю...
Postgres создан с учетом расширяемости, соответствия стандартам, масштабируемости и целостности данных - иногда в ущерб скорости. Поэтому для простых рабочих процессов с большим количеством операций чтения Postgres может оказаться худшим выбором, чем MySQL.
<?php
$rsUser = Model::where('user_id', ID_ЮЗЕРА)->first();
if($rsUser) {
DB::statement(DB::raw('set @row := 0'));
$rsFirst2Before = Model::where('score', '<=', $rsUser->score)->orderBy('score', 'DESC')->select(['*', DB::raw('@row := @row + 1 as `row`')])->limit(11);
$rsAfter = Model::where('score', '>=', $rsUser->score)->where('user_id', '<>', $rsUser->user_id)->orderBy('score', 'ASC')->select(['*', DB::raw('@row : = @row + 1 as `row`')])->limit(10);
$rs = $rsFirst2Before->union($rsAfter)->get();
// dump($rs);
}
?>
<?php
$from_id = $items->pluck('from_id');
$arFormIds = $from_id->toArray();
$arPlus = $from_id->where($arFormIds, function ($value, $key) {
return $value > 0;
})->toArray();
$arMinus = $from_id->where($arFormIds, function ($value, $key) {
return $value < 0;
})->toArray();
// $arPlus - все положительные
// $arMinus - все отрицательные
?>
<?php
// $items - твоя коллекция...без pluck...
$arPlus = $items->where('form_id', '>', 0)->toArray();
$arMinus = $items->where('form_id', '<', 0)->toArray();
// $arPlus - все положительные
// $arMinus - все отрицательные
?>
Делать на каждый день новый запрос и заносить в график
SELECT COUNT(*) AS `ALL`, SUM(IF(`count` IS NULL, 1, `count`)) AS `ALL_SUM` FROM `table`;
/*
ALL - общее кол-во записей
ALL_SUM - сумма столбца `count` с учётом, что NULL считаем за единицу
*/
SELECT *, COUNT(*) AS `ALL`, SUM(IF(`count` IS NULL, 1, `count`)) AS `ALL_SUM` FROM `table` GROUP BY `id`;
/*
Это по каждой записи суммарное кол-во в поле `count` с учётом, что NULL считаем за единицу
*/
SELECT *, IF(`count` IS NULL, 1, `count`) AS `ALL_SUM` FROM `table`
$rs = Model::with('parent')->какие-то_условия->whereNotNull('parent_id')->get();
foreach($rs as $item) {
$rsParents = $item->parent; // parent - это связь "к себе самой"
if($rsParents->count() > 0) {
$i = 0;
foreach($rsParents as $p_item) {
$i++;
// $item->id.'-Д-'.$i; // Папы с дочками
}
}else{
// $item->id // Холостяк
}
}
/* 1 - id категории "Химия" */
SELECT * FROM `site_news` WHERE FIND_IN_SET('1', `category`);
accept_mutex off;
aio threads;
Вот если брать образцовый сайт в 2020, то как он будет устроен?
Поскольку я вообще начинающая начинашка есть опасения что самостоятельно могу случайно обучаться уже неактуальным вещам из нулевых( а хотелось бы изучать то, что сейчас делают крутые программисты