20250810 v1.0

This commit is contained in:
2025-08-10 11:48:29 +03:00
parent d2077fbc76
commit 3dc403ebf2
11 changed files with 426 additions and 19 deletions

View File

@@ -0,0 +1,39 @@
# Пороверка существования данных и их количество
Итак, в [прошлой статье](get_data.md) мы получали данные из таблицы `users`. Напомним, что она имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:-------------------:|
| 1 | Ivan | ivan@example.com |
| 2 | Olga | olga@example.com |
| 3 | Oleg | oleg@mail.ru |
| 4 | Nikolay | nikolay@example.com |
Попробуем теперь проверить, есть ли в таблице пользователь`Oleg`. Для этого воспользуемся
методом [IsExist](../class_desc/classes/Database.md#72-проверка-существования-записей-isexist):
```php
$userExist = $db->IsExist('users', new ConditionBuilder()->WhereEquals('user_name', 'Oleg'));
// Выведет "Он существует!"
if (userExist)
echo 'Он существует!';
```
Давайте теперь посчитаем количество всех пользователей и тех, у которых почта на домене `example.com`. Для этого нам
потребуется метод [Count](../class_desc/classes/Database.md#71-подсчет-записей-count):
```php
// Все пользователи
$allUsers = $db->Count('users');
// Пользователи, у которых почта на домене `example.com`
$exampleUsers = $db->Count('users', new ConditionBuilder()->WhereLike('user_mail', '%example.com'));
// Выведет: 3/4
echo "$exampleUsers/$allUsers";
```
Итак, мы рассмотрели способы проверки существования данных и подсчёта количества данных по условию.
[Предыдущий пункт](get_data.md) | [На главную](../index.md) | [Следующий пункт](update_data.md)

View File

@@ -81,7 +81,16 @@ class User implements IDBItem
Значения во всех столбцах, кроме `user_name` должны быть уникальными, во всех столбцах не пустыми, а первичным ключом
таблицы является столбец `id` с автозаполнением.
Теперь давайте создадим таблицу `user`:
Теперь давайте создадим таблицу `user`. Сперва давайте проверим, существует ли такая таблица в БД. В этом нам поможет
метод [IsTableExist](../class_desc/classes/Database.md#101-проверка-существования-таблицы-istableexist):
```php
if ($db->IsTableExist('user'))
throw new PDOException("Ты чего это удумал? Таблица users уже существует!");
```
Итак, таблицы нет и мы можем воспользоваться
методом [CreateTable](../class_desc/classes/Database.md#102-создание-таблицы-createtable) для её создания:
```php
if (!$db->CreateTable('user', "\\App\\Models\\User"))

View File

@@ -0,0 +1,44 @@
# Удаление данных
Итак, в [прошлой статье](update_data.md) мы обновляли данные в таблице `users`. Теперь она имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:-----------------:|
| 1 | Ivan | ivan@yandex.ru |
| 2 | Olga | olga@ya.ru |
| 3 | Oleg | oleg@mail.ru |
| 4 | Nikolay | nikolay@yandex.ru |
Попробуем теперь удалить строку, где имя пользователя - `Oleg`. Для этого воспользуемся
методом [Delete](../class_desc/classes/Database.md#9-удаление-записей-delete):
```php
if ($db->Delete('users', new ConditionBuilder()->WhereEquals('user_name', 'Oleg')))
echo 'Oleg больше не с нами!';
```
Теперь таблица имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:-----------------:|
| 1 | Ivan | ivan@yandex.ru |
| 2 | Olga | olga@ya.ru |
| 4 | Nikolay | nikolay@yandex.ru |
Удалять можно не только одну запись. Например, давайте удалим всех пользователей, у которых почта находится на
`yandex.ru`:
```php
if ($db->Delete('users', new ConditionBuilder()->WhereLike('user_mail', '%yandex.ru')))
echo 'Пользователи yandex.ru теперь не с нами!';
```
Теперь таблица имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:----------:|
| 2 | Olga | olga@ya.ru |
Итак, мы рассмотрели все возможные способы удаления данных.
[Предыдущий пункт](update_data.md) | [На главную](../index.md) | [Следующий пункт](drop_table.md)

View File

@@ -0,0 +1,14 @@
# Удаление таблицы
Итак, в [прошлой статье](delete_data.md) мы удаляли данные из таблицы `users`. Теперь же мы хотим полностью удалить её.
Для этого воспользуемся методом [DropTable](../class_desc/classes/Database.md#103-удаление-таблицы-droptable):
```php
if ($db->DropTable('users'))
echo 'Нет у нас больше пользователей =(';
```
После удаления, таблицы не будет в базе данных. Итак, мы рассмотрели все возможные способы работы с данными и таблицами
в классе [Database](../class_desc/classes/Database.md).
[Предыдущий пункт](delete_data.md) | [На главную](../index.md)

View File

@@ -13,12 +13,54 @@
методом [GetRow](../class_desc/classes/Database.md#61-получение-одного-объекта-getrow):
```php
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
$user = $db->GetRow('users', where: new ConditionBuilder()->WhereEquals('user_name', 'Oleg'), className: "\\App\\Models\\User")
$user = $db->GetRow('users', where: new ConditionBuilder()->WhereEquals('user_name', 'Oleg'), className: "\\App\\Models\\User");
echo $user->Id; // Выведет 3
echo $user->Email; // Выведет oleg@mail.ru
```
[Предыдущий пункт](insert_data.md) | [На главную](../index.md) | [Следующий пункт](../index.md)
Давайте теперь получим пользователей, у которых почта на домене `example.com`. Для этого нам потребуется
метод [GetRows](../class_desc/classes/Database.md#62-получение-набора-объектов-getrows):
```php
$users = $db->GetRows('users', where: new ConditionBuilder()->WhereLike('user_mail', '%example.com'), className: "\\App\\Models\\User");
// Выведет:
// Ivan
// Olga
// Nikolay
foreach ($users as $user)
echo $user->Name;
```
Давайте теперь немного изменим предыдущую задачу. Пусть нам требуется только столбец `user_name` для всех пользователей.
Для этого нам потребуется метод [GetCol](../class_desc/classes/Database.md#63-получение-столбца-getcol):
```php
$users = $db->GetCol('users', 'user_name');
$users = implode(', ', $users);
// Выведет: Ivan, Olga, Oleg, Nikolay
echo $users;
```
Далее, представим, что вы пишете функцию получения `id` по `user_name`. С помощью
метода [GetValue](../class_desc/classes/Database.md#64-получение-одиночного-значения-getvalue) мы это сделаем ниже:
```php
function GetUserId (string $userName): int {
// Задаём условие
$condition = new ConditionBuilder()->WhereEquals('user_name', $userName);
// Получаем
$id = $db->GetValue('users', 'id', $condition);
// Возвращаю 0, если ошибка и $id, если всё хорошо
return $id == null ? 0 : $id;
}
```
Итак, мы рассмотрели все возможные способы получения данных.
[Предыдущий пункт](insert_data.md) | [На главную](../index.md) | [Следующий пункт](update_data.md)

View File

@@ -0,0 +1,66 @@
# Обновление данных
Итак, в [прошлой статье](count_exist_data.md) мы рассмотрели способы проверки существования данных и подсчёта количества
данных по условию из таблицы `users`. Напомним, что она имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:-------------------:|
| 1 | Ivan | ivan@example.com |
| 2 | Olga | olga@example.com |
| 3 | Oleg | oleg@mail.ru |
| 4 | Nikolay | nikolay@example.com |
Попробуем теперь изменить почту пользователя `Olga`. Для этого воспользуемся
методом [Update](../class_desc/classes/Database.md#81-обновление-одной-записи-update):
```php
// Давайте получим сперва пользователя
$user = $db->GetRow('users', where: new ConditionBuilder()->WhereEquals('user_name', 'Olga'), className: "\\App\\Models\\User");
// Меняем почту
$user->Email = 'olga@ya.ru'
if ($db->Update('users', $user))
echo 'Почта Ольги обновлена!';
```
Теперь таблица в БД имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:-------------------:|
| 1 | Ivan | ivan@example.com |
| 2 | Olga | olga@ya.ru |
| 3 | Oleg | oleg@mail.ru |
| 4 | Nikolay | nikolay@example.com |
Давайте теперь обновим оставшихся пользователей, у которых почта на домене `example.com`. Для этого нам потребуется
метод [UpdateMany](../class_desc/classes/Database.md#82-обновление-нескольких-записей-updatemany):
```php
// Давайте сперва получим Ivan
$userIvan = $db->GetRow('users', where: new ConditionBuilder()->WhereEquals('user_name', 'Ivan'), className: "\\App\\Models\\User");
// Давайте сперва получим Nikolay
$userNikolay = $db->GetRow('users', where: new ConditionBuilder()->WhereEquals('user_name', 'Nikolay'), className: "\\App\\Models\\User");
// Меняем их почту
$userIvan->Email = "ivan@yandex.ru";
$userNikolay->Email = "nikolay@yandex.ru";
// Обновляем
if ($db->UpdateMany('users', $userIvan, $userNikolay))
echo 'Почты обновлены!';
```
Теперь таблица в БД имеет вид:
| id | user_name | user_mail |
|:--:|:---------:|:-----------------:|
| 1 | Ivan | ivan@yandex.ru |
| 2 | Olga | olga@ya.ru |
| 3 | Oleg | oleg@mail.ru |
| 4 | Nikolay | nikolay@yandex.ru |
Итак, мы рассмотрели все возможные способы обновления данных.
[Предыдущий пункт](count_exist_data.md) | [На главную](../index.md) | [Следующий пункт](delete_data.md)