Вступление
В последней статье рассказывалось о том, как запустить компьютер в среде Windows. laravel
Проект, эта статья о том, как использовать laravel Конструктор запросов
Для добавления, удаления, изменения и проверки.
Читая эту статью, я соглашаюсь с тем, что у вас уже есть следующие знания:
- Понимание базового синтаксиса PHP
- Понимание структуры базы данных
- Понимание распространенных SQL-запросов
текст
Прежде чем приступить к цензуре дополнений, удалений и изменений, мы должны сначала подготовить некоторые шаги:
- Службы Php, nginx, MySQL включены должным образом
- Новая база данных и ее таблица данных
Открытые сервисы Мы открыли последнюю статью. Wnmp.exe
-> Запустить все
Затем введите команду в cmd:
D:/wnmp/Wnmp/php/php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/Wnmp/php/php.ini
Создайте новую базу данных, которую я назвал магазин
Затем создайте две новые таблицы Они:
- Товары – > Список товаров
- Пользователь – > таблица пользователей
После того, как новая таблица данных была завершена, я случайным образом вставил в нее несколько фрагментов данных. На следующем рисунке:
Теперь, когда подготовительные шаги завершены, давайте откроем то, что мы описали в предыдущей статье. тестовый Laravel
проект
Посмотрите документ Laravel, чтобы увидеть Конфигурацию базы данных
состояние config/database.php
Li, Поскольку мы являемся базой данных MySQL, мы находим соответствующие параметры MySQL:
См. database.php
Конфигурация файла MySQL позволяет нам видеть, что значение конфигурации является переменной
, указывающей на корневой каталог проекта .env
файл
открываем .env
Файл, заполняем соответствующую реальную конфигурацию MySQL, на следующем рисунке:
Если вы настроите значение ключа, вы будете знать, что оно означает. Здесь мы записываем пароль базы данных, почему он? пароль
О чем? Посмотрев на каталог установки Winamp, мы видим, что он есть. readme.txt
Текст документа выглядит следующим образом:
Copyright (c) 2012 - 2019, Kurt Cancemi ([email protected]) Donations are appreciated no matter if big or small. https://wnmp.x64architecture.com/donate/ Wnmp is an easy Nginx, MariaDB and PHP environment for Windows. The default login for MySQL/MariaDB/phpMyAdmin is: username: root password: password Note: you can change it via phpMyAdmin
Согласно содержимому файла, мы знаем, что пароль: пароль
Поскольку это локальная среда разработки, пароль здесь не будет изменен. Но если это производственная среда, вы должны изменить пароль базы данных при использовании пакета интегрированной среды.
Кроме того, в статье не представлена конкретная структура каталога проекта. Предлагается вам ознакомиться с официальными документами и ознакомиться с ними.
Конфигурация базы данных проекта была выделена для локальной. магазин
База данных.
Теперь нам нужно его настроить. Маршрут
Все Маршрутизация Laravel
Конфигурация находится в корневом каталоге. маршруты
Li, маршруты
В каталоге есть четыре профиля маршрутизации, но я не собираюсь здесь говорить о различиях, просто сосредоточьтесь на них. web.php
Все последующие маршруты добавляются в этот файл.
Увидев здесь студентов, также предлагаю взглянуть на документ маршрутизации laravel, потому что текст не очень подробный, портал: https://learnku.com/docs/lara…
Кстати, мой личный выбор laravel
В качестве PHP-фреймворка для углубленного изучения элегантная маршрутизация laravel является важной причиной, по которой я выбрал ее.
Позвольте мне сначала написать несколько маршрутов. Давайте почувствуем это.
Route::get('test/queryUsers',['uses' => '[email protected]']); Route::post('test/queryUsers',['uses' => '[email protected]']); Route::get('test/queryUsers/{id}',['uses' => '[email protected]']); Route::match(['get','post'],'test/queryUsers',['uses' => '[email protected]']); Route::any('test/queryUsers',['uses' => '[email protected]']);
Мы знаем, что хорошо известные HTTP-запросы бывают get
и post
двух видов.
- О. Давайте по очереди проанализируем вышеприведенную маршрутизацию. Во-первых, взгляните на статью 1:
Route::get('test/queryUsers',['uses' => '[email protected]']);
Этот маршрут указан get
Запрос режима, маршрутизируемый как Пользователи тестов/запросов
Логика пойдет Контроллер тестирования
Контроллеры Пользователи запросов
Метод
Здесь есть два существительных. Контроллер
и Способ
Примечание: laravel-это mvc-фреймворк
О mvc
Понимание требует поиска некоторой информации для себя.
запрос
Контроллер в проекте Приложение/Http/Контроллеры
В каталоге, здесь я добавляю новый. TestController
Контроллер, TestController
Здесь добавлен новый. Пользователи запросов
Метод:
get(); return $users; } }
Давайте сначала посмотрим на результаты. Введите в адресной строке (доменное имя + маршрутизация): http://test.lara.com/test/queryUsers
:
Яркая строка в коде:
DB::table('user')->get();
Эта строка кода представляет собой запрос к базе данных магазина пользователь
Все данные в таблице, поэтому мы видим, что пользователь
Все три записи в таблице были возвращены.
- B. Теперь давайте проанализируем статью 2 вышеупомянутой маршрутизации:
Route::post('test/queryUsers',['uses' => '[email protected]']);
Для этого маршрута существует только один маршрут и один маршрут для первого маршрута. post
Разница в том, что да, это маршрут запроса на публикацию. Мы знаем, что способ запроса на публикацию не может быть введен в адресной строке браузера для получения результата, поэтому нам нужно использовать инструмент. Почтальон
Это хорошо. Если кто-то из вас им не пользовался или не знает об этом, я предлагаю вам проверить его и ознакомиться с ним. Это не представлено в этой статье.
Теперь мы Почтальон
Создаем новый запрос, как показано ниже:
Мы нажимаем отправить
Получить:
Что? Как мы можем не получить желаемых результатов? Очевидно, что случилось? Давайте еще раз взглянем на документацию по маршрутизации.
Что? Как мы можем не получить желаемых результатов? Очевидно, что случилось? Давайте еще раз взглянем на документацию по маршрутизации.
В документе я просматриваю и публикую
Слова, связанные со следами, см.:
оказывается, это тот случай, когда СЛУЖАТ
В результате как начинающие, так и начинающие студенты должны быть знакомы со словом. Подделка межсайтового запроса
Чтобы решить проблему в laravel CSRF
Эта скрытая опасность, механизм защиты по умолчанию, нам нужно настроить Белый список CSRF
Согласно документу, мы знаем Белый список CSRF
Конфигурация в VerifyCsrfToken
В промежуточном программном обеспечении VerifyCsrfToken
Путь промежуточного программного обеспечения: App/Http/Middleware/VerifyCsrfToken.php
Откройте файл и добавьте Белый список CSRF
,
protected $except = [ 'http://test.lara.com/test/queryUsers', ];
После этого мы открываем почтальона и нажимаем отправить
Вы можете увидеть данные, которые, как ожидается, вернутся:
- C. Теперь давайте проанализируем статью 3 вышеупомянутой маршрутизации:
Route::get('test/queryUsers/{id}',['uses' => '[email protected]']);
Можно видеть, что разница между этой маршрутизацией заключается в том, что она находится в конце маршрута. {id}
В процессе разработки у нас есть требование, чтобы интерфейс передавал идентификатор пользователя, а сервер возвращал информацию о пользователе, соответствующую этому идентификатору.
В настоящее время его необходимо изменить. Тестовый контроллер
Контроллер запрос пользователей
Метод:
public function queryUsers() { $id = request () - > id; // Get parameters in this way $users = DB::table('user')->where('id', $id)->get(); return json_encode($users); }
Объясните этот SQL на просторечии: запросите таблицу table для записей с идентификатором = $id (значение, переданное маршрутом). Просмотрите результаты в соответствии с ожиданиями:
- D. Теперь давайте проанализируем статьи 4 и 5 вышеупомянутой маршрутизации:
Route::match(['get','post'],'test/queryUsers',['uses' => '[email protected]']); Route::any('test/queryUsers',['uses' => '[email protected]']);
Я не буду демонстрировать эти два маршрута. Объясните их отдельно. совпадение
Маршрутизация-это определенный режим запроса, один или несколько. и любые
Он совпадает любым способом, будь то через get
still post
Так, как мы запрашиваем, мы можем получить желаемые результаты.
Давайте посмотрим на таблицу товаров, которую я разработал выше.
Мы видим, что эти два параметра не знают, кто является созданным пользователем, но есть значение UID. В настоящее время мы надеемся, что интерфейс сможет не только возвращать товарную информацию, но и сообщать мне, кто ее создатель. В это время нам нужно использовать объединение нескольких таблиц. Мы добавляем новый маршрут:
Route::get('test/queryGoods',['uses' => '[email protected]']);
Затем Контроллер тестирования
Здесь добавляется новый. запрос товаров
Метод:
public function queryGoods() { $goods = DB::table('goods') ->leftJoin('user', 'goods.uid', '=', 'user.id') ->get(); return json_encode($goods); }
Возвращайте данные, как ожидалось:
[{ id: 1, uid: 1, Name: "Test Goods 1" desc: null, img_urls: null, price: "99.00", old_price: "78.00", Real_name: Chen Yun, Nickname: Poverty shakes. head_url: null, age: null, gender: null, level: null }, { id: 2, uid: 2, Name: "Test Commodity 2" desc: null, img_urls: null, price: "290.00", old_price: "389.00", Real_name: "Ouyang Xinxin". Nickname: Xiao Xinxin. head_url: null, age: null, gender: null, level: null } ]
Но возвращаются все поля информации о пользователе. Иногда нам просто нужно вернуть указанные поля для обеспечения безопасности, например, нам нужно только вернуть. пользователь
В таблице реальное имя
и head_url
Поля, затем нам нужно выполнить некоторые ограничения полей:
public function queryGoods() { $goods = DB::table('goods') ->leftJoin('user', 'goods.uid', '=', 'user.id') ->select('goods.*', 'user.real_name', 'user.head_url') ->get(); return json_encode($goods); }
Сосредоточьтесь на этой строке кода:
select('goods.*', 'user.real_name', 'user.head_url')
Эта строка кода указывает, что она возвращается в таблицу товары Все поля
И в пользовательской таблице реальное имя
и head_url
Поля идеально достигают желаемых результатов.
Недавно добавленные
Пока что запрос почти написан, и мы начинаем переходить к таблице данных. Недавно добавленные
данные
Мы добавили новый. сообщение
Маршрутизация запросов тестирование/Добавление пользователя
:
Route::post('test/addUser',['uses' => '[email protected]']);
Добавить в Белый список маршрутизации CSRF
protected $except = [ 'http://test.lara.com/test/queryUsers', 'http://test.lara.com/test/addUser', ];
Затем Контроллер тестирования
Здесь добавляется новый. добавить пользователя
Метод:
public function addUser() { $real_name = request()->real_name; $nickname = request()->nickname; DB::table('user')->insert( ['real_name' => $real_name, 'nickname' => $nickname] ); $users = DB::table('user')->get(); return json_encode($users); }
открыть почтальон
Добавить параметры:
{"real_name": "liu yifei", "nickname", "xiao feifei"}
Нажмите кнопку Отправить, чтобы убедиться, что данные вставлены правильно, как и ожидалось.
Конструктор запросов Предоставляет insert
Метод, используемый для вставки записей в базу данных. Метод вставки получает имена полей и значения полей в виде массива для операции вставки
DB::table('user')->insert( ['real_name' => $real_name, 'nickname' => $nickname] );
редактировать
Мы добавили новый. put
Маршрутизация запросов тестирование/обновление пользователя
:
Route::put('test/updateUser',['uses' => '[email protected]']);
Аналогично добавьте Белый список маршрутизации CSRF
protected $except = [ 'http://test.lara.com/test/queryUsers', 'http://test.lara.com/test/addUser', 'http://test.lara.com/test/updateUser', ];
Затем Контроллер тестирования
Здесь добавляется новый. обновить пользователя
Метод:
public function updateUser() { $id = request()->id; $nickname = request()->nickname; DB::table('user') ->where('id', $id) ->update(['nickname' => $nickname]); $users = DB::table('user')->get(); return json_encode($users); }
откройте почтальон
Мы знаем, что вновь добавленные записи возвращаются Лю Ифэй
Идентификатор равен 4. идентификатор
Чтобы обновить свой ник
В postman добавьте параметры запроса:
{id":"4","nickname":"Little Affi ~"} _____________
Нажмите кнопку Отправить, чтобы убедиться, что данные обновлены правильно, как и ожидалось.
Конструктор запросов Предоставляет обновление
Метод, используемый для обновления существующих записей. Примите массив, содержащий поля и значения, подлежащие обновлению
->where('id', $id)->->update(['nickname' => $nickname]);
удалить
Мы добавили новый. удалить
Маршрутизация запросов проверка/удаление пользователя
:
Route::delete('test/deleteUser',['uses' => '[email protected]']);
Аналогично добавьте Белый список маршрутизации CSRF
protected $except = [ 'http://test.lara.com/test/queryUsers', 'http://test.lara.com/test/addUser', 'http://test.lara.com/test/updateUser', 'http://test.lara.com/test/deleteUser', ];
Затем TestController
Здесь добавляется новый. Удалить пользователя
Метод:
public function deleteUser() { $id = request()->id; DB::table('user') ->where('id', $id) ->delete(); $users = DB::table('user')->get(); return json_encode($users); }
откройте почтальон
Теперь мы хотим Лю Ифэй
Записи были удалены из базы данных. Мы ее знаем. id
Да, 4. Мы основываемся на id
Чтобы удалить его, добавьте параметры запроса:
{"id":"4"}
Нажмите кнопку Отправить, чтобы убедиться, что данные удалены правильно, как и ожидалось (запись с идентификатором 4 недоступна).
Конструкторы запросов в laravel можно использовать удалить
Метод Удаляет записи из таблицы. Добавить в где
Это предложение ограничивает условие удаления:
->where('id', $id)->delete();
Есть много способов, не представленных в статье. Рекомендуется, чтобы студенты, которым необходимо учиться, прочитали следующие документы, портал:
Есть много способов, не представленных в статье. Рекомендуется, чтобы студенты, которым необходимо учиться, прочитали следующие документы, портал:
Окончание
На данный момент эта статья закончена, подробнее Передний конец
//php /Фотография
Соответствующие статьи по проблемам общественности номер:
Желание быть легким Внимание читателя является движущей силой моей оригинальной работы.