Домашнее задание 05.08
- Вычитать тз
- Создать приватный репозиторий в github и привязать к локальному с новым проектом laravel 9. Создать новую бд. Настроить подключение к бд.
- Спроектировать таблицы. Создать миграции, модели и сидеры.
- Сделать главную страницу (шаблон FlexStart).
- Установить пакет для авторизации, debugbar.
- Создать страницу Мой профиль для администратора.
Домашнее задание 02.08
- Дан массив фамилий. Найти кол-во однофамильцев. Например, ['ivanov', 'petrov', 'ivanov', 'petrov', 'ivanov', 'petrov'] - 6, ['ivanov', 'petrov', 'ivanov'] - 2, ['ivanov', 'petrov'] - 0
- Дан массив, элементами которого являются массивы, содержащие фамилии учеников. Например, a = [['ivanov', 'petrov'], ['ivanov', 'sidorov'], ['ivanov', 'petrov', 'leonov']]. Найти учеников, которые есть в каждом подмассиве. Найти учеников, которые есть только в одном подмассиве. Найти учеников, которые есть только ровно в 2 подмассивах. Найти учеников, которые есть только в k (k - число дано) подмассивах.
- Написать функцию, которая на вход получает две строки с кол-вом часов и минут в формате "2 h 40 min". Найти результат суммы этих периодов времени в таком же формате. Например, дано: "1 h 40 min", "0 h 22 min". Результат: "2 h 2 min"
Домашнее задание 31.07
- Прочитать при желании про паттерны Синглтон, Фабрика, Наблюдатель, Фасад и Стратегия.
- Потестировать Observers. Создать Observer к какой-нибудь модели (не User) и протестировать большинство из 15 стандартных событий с помощью info(...) (в .env указать daily для LOG_CHANNEL)
- Протестировать Events. Event создать двумя способами: через event:generate и make:event. Событие - пользователь написал сообщение (модели User и Message). Слушатель - получает от события пользователя и сообщение и пишет в лог их id и текст сообщения и далее удаляет сообщение из бд.
Домашнее задание 30.07
- Сделать сохранение фильтра (по возможности параметры в сессию как массив)
- Рефакторинг контроллера пользователей: сервис
- Написать функцию isList(), которая определяет, является ли данный массив строгим массивом, то есть индексы его элементов являются последовательными целыми числами, начиная с нуля. Пример, isList([4, 5, 3]) - true, isList([0 => 3, 2 => 4, 3 => 5]) - false, isList([4, 5, 'a' => 5]) - false
Домашнее задание 26.07
- Рекомендации по именованию для CRUD
- Повтор урока. Создать middleware для проверки роли администратора. Добавить для роутов администратора
- Сделать две формы на странице профиля. С полной валидацией и Rule
- Сделать выход из личного кабинета
- Дан массив из одинаковых по структуре массивов с любым уровнем вложенности. Например, $a = [
['developer' => ['id' => 1, 'name' => 'Ivan']],
['developer' => ['id' => 2, 'name' => 'Petr']],
]; Написать функцию pluck(), которая из данного массива получается одномерный массив из значений, путь к которым указан в виде строки из ключей через точку. Например, plain($a, 'developer.name') вернет массив ['Ivan', 'Petr']
Домашнее задание 22.07
- Прочитать статью про транзакции. Поэкспериментировать (обернуть в транзакцию любые два запроса к бд, искусственно вызвать исключение). Написать два способа транзакции.
- Повтор действия с урока по входу в личный кабинет
Домашнее задание 19.07
- Написать консольную команду, которая удаляет всех мягко удаленных пользователей.
- Написать консольную команду, которая добавляет в бд фейковых пользователей. Команда запрашивает у пользователя кол-во пользователей. Сделать проверку на валидность введенного кол-ва (от 1 до 100).
- Написать команду, которая удаляет 10 мягко удаленных сущностей. Название сущности передается при вызове команды. Например, php artisan del:soft user Поставить команды в расписание - каждый час. Протестировать. Усовершенствовать команду - можно передать несколько сущностей при вызове.
- Прочитать статьи про исключения: первая и вторая. Поэкспериментировать, проверить какой-нибудь пример из статей.
- С прошлого дз - кастомное правило валидации на пароль
- Дан массив чисел. Выполнить сортировку по четности, то есть сначала должны идти четные, потом нечетные. Можно использовать usort.
- Дан двумерный массив. Например, $a=[[100,100],[1,2,3],[4,5],[0,-1],[1,2,3,4,5]]; Переставить элементы массива $a так, чтобы их суммы чисел возрастали. То есть $a=[[0,-1], [1,2,3],[4,5],[1,2,3,4,5],[100,100]];
Домашнее задание 12.07
- Сделать кнопки для мягкого удаления и полного удаления. Показывать всех пользователей (в том числе и удаленных). Для удаленных пользователей кнопка Восстановить.
- Написать функцию, которая определяет, является ли пароль простым. Пароль простой, если менее 8 символов, или содержит менее 4 различных символов, или состоит только из цифр, или содержит 'qwerty' или 'password'
Домашнее задание 10.07
- Пользователь заходит на страницу и видит кол-во посещений данной страницы и дату и время последнего посещения. Реализовать с помощью сессий и функции date('d.m.y H:i:s') - возвращает строку с текущей датой и временем
Домашнее задание 02.07
- Дан двумерный массив чисел. Например, [[1, 2, 3], [4, 5], [6, 7, 8, 9]]; В каждом подмассиве поменять местами наименьший и наибольший элементы.
- Известно, что \(a_1 = 0\), \(a_2=2\) и \(a_n=3a_{n-1}-2a_{n-2}+1\). Найдите \(a_{20}\)
Домашнее задание 01.07
- Создать массив в php. Перегнать в json и обратно с помощью json_encode/_decode. Вывести промежуточный и итоговый результат.
- В произвольной модели создать два аттрибута (getSomeNameAttribute). Протестировать
- В модель doctor (из предыдущего дз) добавить soft deleting (добавить через миграцию столбец, добавить трейт). Протестировать: мягко удалить конкретного доктора, удалить доктора из базы, написать два запроса - один с игнорированием удаленных, второй - с учетом удаленных.
- Создать trait Nameable с методом, который выводит $this->name большими буквами. Подключить трейт в модели, где есть name. Протестировать.
- Протестировать casts для boolean
- Дан многомерный массив чисел. Например, [1, 2, [3, [4, 5]], 6, [7], [8, 9]]. Найти кол-во чисел в массиве.
Домашнее задание 29.06
- Создать таблицу managers (имя, фамилия, email) и drivers (имя, фамилия, телефон). Таблицу cars использовать старую. Создать связи - у каждого водителя есть один менеджер и одна машина. Добавить менеджера, двух водителей, две машины. Привязать к водителям менеджера и машину. Получить менеджера из бд и показать его водителей. Получить водителя из бд и показать его менеджера и машину
-
- Создать миграцию для таблицы doctors - хранит данные о врачах: фамилия, имя, отчество, год рождения, специальность, кол-во пациентов, кол-во лет работы, описание, created_at, updated_at.
- Создать сидер для заполнения таблицы 100 записей.
- Создать роут и новый контроллер для запросов
- У доктора с id = 5 изменить год рождения на 1975 и кол-во пациентов на 100.
- Удалить доктора с id=5
- У всех докторов, год рождения которых от 1980 до 1990 включительно обнулить кол-во пациентов
- Удалить всех докторов, у которых кол-во пациентов меньше 5
- Удалить всех докторов, у которых фамилия заканчивается на 'ов' и у которых специальность 'стоматолог'
- Найти кол-во всех докторов
- Найти кол-во докторов, у которых стаж работы больше 20 лет
- Найти какой наибольший стаж у докторов
- Найти среднее кол-во пациентов у докторов специальности 'хирург'
- Найти наименьший год рождения у докторов, у которых пациентов от 10 до 20 и специальность или хирург, или стоматолог
Домашнее задание 26.06
- Прочитать про отношения статью и документацию
- Прочитать про жадную загрузку (понять +-)
- В таблицу students добавить user_id на пользователя через миграцию. То есть несколько студентов привязаны к пользователю (менеджеру). В моделях User и Student добавить отношения. Поэкспериментировать с вызовом отношений и др. свойства (привязка и т.п.) по документации
- Добавить таблицы cars и owners. Связать их через pivot-таблицу car_owner. Поэкспериментировать с detach, sync и др.
Домашнее задание 24.06
- Carbon - все задачи Документация
- Получить всех студентов которые (с фамилией Ivanov или годом 2000) и (id > 3 или id = 1)
Домашнее задание 21.06
- Повторить код с урока локально и сделать форму для подписчиков
Домашнее задание 19.06
- Глянуть про faker
- Книга по php (в тг) Гл.2-4 прочитать
- Написать seeder для студентов
- Получить из бд список студентов
- всех
- всех упорядоченных по году
- всех упорядоченных по году в обратном порядке
- первые три студента, у которых год равен 2000
- первый студент, у которого год от 2020 до 2023
- все студенты с фамилией Ivanov и годом 2020
- количество студентов с фамилией Ivanov и годом 2020
- существует ли студент с фамилией Ivanov
- наибольший год у студентов с фамилией Ivanov
- студента у которого id равен 5
- все студентов у которых id < 10 или id < 4
- студентов с 3 по 7 с фамилией Ivanov и годом 2020
Домашнее задание 17.06
- По диагонали глянуть статью про миграции (или найти в русской документации)
- Создать миграцию для таблицы students. Таблица содержит столбцы name - имя студента, surname - фамилия, year - год рождения, address - адрес. Для выполнения миграции использовать команду php artisan migrate Файл миграции можно создать как копию файла миграции users и изменить в названии файла дату. Миграции находятся в database/migrations
- Создать модель Student. Модели находятся в app/Models.
- Создать роут и контроллер. Добавить несколько студентов в бд через Eloquent. Получить из бд а) всех студентов б) всех студентов 1995 года рождения.
Домашнее задание 14.06
- Прочитать бегло статьи про массивы и строки
- Задачи 42, 44, 45, 77
- Задачи на строки 8, 16, 32, 36, 44
Домашнее задание 12.06
- Статья про MVC
- Дорешать задачи с прошлого дз. Каждая задача с отдельным роутом и контроллером
Домашнее задание 10.06
- Посмотреть по диагонали статью про сравнение
- Задачи 42, 44
- Задачи 25, 27, 33, 38, 51, 52
- Задачи 8, 30