Мне перед записью в базу нужно проверить уникальность данных, есть мысль хранить hash где то на стороне и проверять перед записью, какой вариант лучше подойдёт для этой задачи, hashей за год будет примерно 4 320 000 000
CREATE TABLE table_name (create_date DATE);
ALTER TABLE table_name
PARTITION BY RANGE(create_date + 0) (
PARTITION p_old VALUES LESS THAN(20111201),
PARTITION p_1 VALUES LESS THAN(20120201),
PARTITION p_2 VALUES LESS THAN(MAXVALUE)
);
ALTER TABLE table_name
REORGANIZE PARTITION p_2 INTO (
PARTITION p_2 VALUES LESS THAN (20130101),
PARTITION p_max VALUES LESS THAN (MAXVALUE)
);
<?php
$bytes = '208,159,209,128,208,184,208,178,208,181,209,130,44,32,208,188,208,184,209,128';
$str = "";
foreach(explode(',', $bytes) as $code) {
$str .= chr($code);
}
var_dump($str);
//string(20) "Привет, мир"
<?php
$str = "Привет, мир";
$bytes = [];
foreach(str_split($str) as $char) {
$bytes[] = ord($char);
}
echo join(',', $bytes);
//208,159,209,128,208,184,208,178,208,181,209,130,44,32,208,188,208,184,209,128
export default {
data: () => ({
comments: [],
}),
methods: {
loadComments() {
this.comments = axios.get('...').then(response => response.data)
},
scrollToComment() {}
},
async mounted() {
await this.loadComments();
const commentId = this.$router.query.comment
// scrollToComment - ваша функция, которая скроллит до коммента
this.$nextTick(this.scrollToComment(commentId))
}
}
CCatalogProduct::add
добавляются параметры товара к элементу каталога.CIBlockElement::Add
CIBlockElement::Add
в массиве $arFields
в ключе "PROPERTY_VALUES"
свойство, по которому привязаны каталог и торговые предложенияCIBlockElement::Add(
[
'IBLOCK_ID' => 2, // инфоблок с торговыми предложениями
'PROPERTY_VALUES' => [
'CML2_LINK' => 12, // id товара, для которого торговые предложения
],
...
]
)
CModule::IncludeModule('iblock');
CModule::IncludeModule('sale');
$ciBlockElement = new CIBlockElement;
// Добавляем товар-родитель, у которго будут торг. предложения
$product_id = $ciBlockElement->Add(
array(
'IBLOCK_ID' => 13, // IBLOCK товаров
'NAME' => "Товар 1",
"ACTIVE" => "Y",
// Прочие параметры товара
)
);
// проверка на ошибки
if (!empty($ciBlockElement->LAST_ERROR)) {
echo "Ошибка добавления товара: ". $ciBlockElement->LAST_ERROR;
die();
}
// добавляем нужное кол-во торговых предложений
$arLoadProductArray = array(
"IBLOCK_ID" => 14, // IBLOCK торговых предложений
"NAME" => "Торговое предложение 1",
"ACTIVE" => "Y",
'PROPERTY_VALUES' => array(
'CML2_LINK' => $product_id, // Свойство типа "Привязка к товарам (SKU)", связываем торг. предложение с товаром
)
// Прочие параметры товара
);
$product_offer_id = $ciBlockElement->Add($arLoadProductArray);
// проверка на ошибки
if (!empty($ciBlockElement->LAST_ERROR)) {
echo "Ошибка добавления торгового предложения: ". $ciBlockElement->LAST_ERROR;
die();
}
// Добавляем параметры к торг. предложению
CCatalogProduct::Add(
array(
"ID" => $product_offer_id,
"QUANTITY" => 9999
)
);
// Добавляем цены к торг. предложению
CPrice::Add(
array(
"CURRENCY" => "RUB",
"PRICE" => 999,
"CATALOG_GROUP_ID" => 1,
"PRODUCT_ID" => $product_offer_id,
)
);
SELECT
month(reviews.rev_create) as mn,
count(IF(reviews.status = 1, 1, NULL)) as positive,
count(IF(reviews.status = 0, 1, NULL)) as negative
FROM
reviews
GROUP BY mn