#097 10-06-24 Php Игорь Домашние задания

Домашнее задание 26.07

  1. Рекомендации по именованию для CRUD
  2. Повтор урока. Создать middleware для проверки роли администратора. Добавить для роутов администратора
  3. Сделать две формы на странице профиля. С полной валидацией и Rule
  4. Сделать выход из личного кабинета
  5. Дан массив из одинаковых по структуре массивов с любым уровнем вложенности. Например, $a = [
    ['developer' => ['id' => 1, 'name' => 'Ivan']],
    ['developer' => ['id' => 2, 'name' => 'Petr']],
    ]; Написать функцию pluck(), которая из данного массива получается одномерный массив из значений, путь к которым указан в виде строки из ключей через точку. Например, plain($a, 'developer.name') вернет массив ['Ivan', 'Petr']

Домашнее задание 22.07

  1. Прочитать статью про транзакции. Поэкспериментировать (обернуть в транзакцию любые два запроса к бд, искусственно вызвать исключение). Написать два способа транзакции.
  2. Повтор действия с урока по входу в личный кабинет

Домашнее задание 19.07

  1. Написать консольную команду, которая удаляет всех мягко удаленных пользователей.
  2. Написать консольную команду, которая добавляет в бд фейковых пользователей. Команда запрашивает у пользователя кол-во пользователей. Сделать проверку на валидность введенного кол-ва (от 1 до 100).
  3. Написать команду, которая удаляет 10 мягко удаленных сущностей. Название сущности передается при вызове команды. Например, php artisan del:soft user Поставить команды в расписание - каждый час. Протестировать. Усовершенствовать команду  - можно передать несколько сущностей при вызове.
  4. Прочитать статьи про исключения: первая и вторая. Поэкспериментировать, проверить какой-нибудь пример из статей.
  5. С прошлого дз - кастомное правило валидации на пароль
  6. Дан массив чисел. Выполнить сортировку по четности, то есть сначала должны идти четные, потом нечетные. Можно использовать usort.
  7. Дан двумерный массив. Например, $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

  1. Сделать кнопки для мягкого удаления и полного удаления. Показывать всех пользователей (в том числе и удаленных). Для удаленных пользователей кнопка Восстановить.
  2. Написать функцию, которая определяет, является ли пароль простым. Пароль простой, если менее 8 символов, или содержит менее 4 различных символов, или состоит только из цифр, или содержит 'qwerty' или 'password'

Домашнее задание 10.07

  1. Пользователь заходит на страницу и видит кол-во посещений данной страницы и дату и время последнего посещения. Реализовать с помощью сессий и функции date('d.m.y H:i:s') - возвращает строку с текущей датой и временем

Домашнее задание 02.07

  1. Дан двумерный массив чисел. Например, [[1, 2, 3], [4, 5], [6, 7, 8, 9]]; В каждом подмассиве поменять местами наименьший и наибольший элементы.
  2. Известно, что a_1 = 0, a_2=2 и a_n=3a_{n-1}-2a_{n-2}+1. Найдите a_{20}

Домашнее задание 01.07

  1. Создать массив в php. Перегнать в json и обратно с помощью json_encode/_decode. Вывести промежуточный и итоговый результат.
  2. В произвольной модели создать два аттрибута (getSomeNameAttribute). Протестировать
  3. В модель doctor (из предыдущего дз) добавить soft deleting (добавить через миграцию столбец, добавить трейт). Протестировать: мягко удалить конкретного доктора, удалить доктора из базы, написать два запроса - один с игнорированием удаленных, второй - с учетом удаленных.
  4. Создать trait Nameable с методом, который выводит $this->name большими буквами. Подключить трейт в модели, где есть name. Протестировать.
  5. Протестировать casts для boolean
  6. Дан многомерный массив чисел. Например, [1, 2, [3, [4, 5]], 6, [7], [8, 9]]. Найти кол-во чисел в массиве.

Домашнее задание 29.06

  1. Создать таблицу managers (имя, фамилия, email) и drivers (имя, фамилия, телефон). Таблицу cars использовать старую. Создать связи - у каждого водителя есть один менеджер и одна машина. Добавить менеджера, двух водителей, две машины. Привязать к водителям менеджера и машину. Получить менеджера из бд и показать его водителей. Получить водителя из бд и показать его менеджера и машину
    1. Создать миграцию для таблицы doctors - хранит данные о врачах: фамилия, имя, отчество, год рождения, специальность, кол-во пациентов, кол-во лет работы, описание, created_at, updated_at.
    2. Создать сидер для заполнения таблицы 100 записей.
    3. Создать роут и новый контроллер для запросов
    4. У доктора с id = 5 изменить год рождения на 1975 и кол-во пациентов на 100.
    5. Удалить доктора с id=5
    6. У всех докторов, год рождения которых от 1980 до 1990 включительно обнулить кол-во пациентов
    7. Удалить всех докторов, у которых кол-во пациентов меньше 5
    8. Удалить всех докторов, у которых фамилия заканчивается на 'ов' и у которых специальность 'стоматолог'
    9. Найти кол-во всех докторов
    10. Найти кол-во докторов, у которых стаж работы больше 20 лет
    11. Найти какой наибольший стаж у докторов
    12. Найти среднее кол-во пациентов у докторов специальности 'хирург'
    13. Найти наименьший год рождения у докторов, у которых пациентов от 10 до 20 и специальность или хирург, или стоматолог

Домашнее задание 26.06

  1. Прочитать про отношения статью и документацию
  2. Прочитать про жадную загрузку (понять +-)
  3. В таблицу students добавить user_id на пользователя через миграцию. То есть несколько студентов привязаны к пользователю (менеджеру). В моделях User и Student добавить отношения. Поэкспериментировать с вызовом отношений и др. свойства (привязка и т.п.) по документации
  4. Добавить таблицы cars и owners. Связать их через pivot-таблицу car_owner. Поэкспериментировать с detach, sync и др.

Домашнее задание 24.06

  1. Carbon - все задачи Документация
  2. Получить всех студентов которые (с фамилией Ivanov или годом 2000) и (id > 3 или id = 1)

Домашнее задание 21.06

  1. Повторить код с урока локально и сделать форму для подписчиков

Домашнее задание 19.06

  1. Глянуть про faker
  2. Книга по php (в тг) Гл.2-4 прочитать
  3. Написать seeder для студентов
  4. Получить из бд список студентов
    1. всех
    2. всех упорядоченных по году
    3. всех упорядоченных по году в обратном порядке
    4. первые три студента, у которых год равен 2000
    5. первый студент, у которого год от 2020 до 2023
    6. все студенты с фамилией Ivanov и годом 2020
    7. количество студентов с фамилией Ivanov и годом 2020
    8. существует ли студент с фамилией Ivanov
    9. наибольший год у студентов с фамилией Ivanov
    10. студента у которого id равен 5
    11. все студентов у которых id < 10 или id < 4
    12. студентов с 3 по 7 с фамилией Ivanov и годом 2020

Домашнее задание 17.06

  1. По диагонали глянуть статью про миграции (или найти в русской документации)
  2. Создать миграцию для таблицы students. Таблица содержит столбцы name - имя студента, surname - фамилия, year - год рождения, address - адрес. Для выполнения миграции использовать команду php artisan migrate Файл миграции можно создать как копию файла миграции users и изменить в названии файла дату. Миграции находятся в database/migrations
  3. Создать модель Student. Модели находятся в app/Models.
  4. Создать роут и контроллер. Добавить несколько студентов в бд через Eloquent. Получить из бд а) всех студентов б) всех студентов 1995 года рождения.

Домашнее задание 14.06

  1. Прочитать бегло статьи про массивы и строки
  2. Задачи 42, 44, 45, 77
  3. Задачи на строки 8, 16, 32, 36, 44

Домашнее задание 12.06

  1. Статья про MVC
  2. Дорешать задачи с прошлого дз. Каждая задача с отдельным роутом и контроллером

Домашнее задание 10.06

  1. Посмотреть по диагонали статью про сравнение
  2. Задачи 42, 44
  3. Задачи 25, 27, 33, 38, 51, 52
  4. Задачи 8, 30