8000 docs/database.md at 5.2 · vniko/docs · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
< E9E6 script type="application/json" data-target="react-app.embeddedData">{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"artisan.md","path":"artisan.md","contentType":"file"},{"name":"authentication.md","path":"authentication.md","contentType":"file"},{"name":"authorization.md","path":"authorization.md","contentType":"file"},{"name":"billing.md","path":"billing.md","contentType":"file"},{"name":"blade.md","path":"blade.md","contentType":"file"},{"name":"cache.md","path":"cache.md","contentType":"file"},{"name":"collections.md","path":"collections.md","contentType":"file"},{"name":"configuration.md","path":"configuration.md","contentType":"file"},{"name":"container.md","path":"container.md","contentType":"file"},{"name":"contracts.md","path":"contracts.md","contentType":"file"},{"name":"contributions.md","path":"contributions.md","contentType":"file"},{"name":"controllers.md","path":"controllers.md","contentType":"file"},{"name":"database.md","path":"database.md","contentType":"file"},{"name":"documentation.md","path":"documentation.md","contentType":"file"},{"name":"elixir.md","path":"elixir.md","contentType":"file"},{"name":"eloquent-collections.md","path":"eloquent-collections.md","contentType":"file"},{"name":"eloquent-mutators.md","path":"eloquent-mutators.md","contentType":"file"},{"name":"eloquent-relationships.md","path":"eloquent-relationships.md","contentType":"file"},{"name":"eloquent-serialization.md","path":"eloquent-serialization.md","contentType":"file"},{"name":"eloquent.md","path":"eloquent.md","contentType":"file"},{"name":"encryption.md","path":"encryption.md","contentType":"file"},{"name":"envoy.md","path":"envoy.md","contentType":"file"},{"name":"errors.md","path":"errors.md","contentType":"file"},{"name":"events.md","path":"events.md","contentType":"file"},{"name":"facades.md","path":"facades.md","contentType":"file"},{"name":"filesystem.md","path":"filesystem.md","contentType":"file"},{"name":"hashing.md","path":"hashing.md","contentType":"file"},{"name":"helpers.md","path":"helpers.md","contentType":"file"},{"name":"homestead.md","path":"homestead.md","contentType":"file"},{"name":"installation.md","path":"installation.md","contentType":"file"},{"name":"lifecycle.md","path":"lifecycle.md","contentType":"file"},{"name":"localization.md","path":"localization.md","contentType":"file"},{"name":"mail.md","path":"mail.md","contentType":"file"},{"name":"middleware.md","path":"middleware.md","contentType":"file"},{"name":"migrations.md","path":"migrations.md","contentType":"file"},{"name":"packages.md","path":"packages.md","contentType":"file"},{"name":"pagination.md","path":"pagination.md","contentType":"file"},{"name":"providers.md","path":"providers.md","contentType":"file"},{"name":"queries.md","path":"queries.md","contentType":"file"},{"name":"queues.md","path":"queues.md","contentType":"file"},{"name":"quickstart-intermediate.md","path":"quickstart-intermediate.md","contentType":"file"},{"name":"quickstart.md","path":"quickstart.md","contentType":"file"},{"name":"redis.md","path":"redis.md","contentType":"file"},{"name":"releases.md","path":"releases.md","contentType":"file"},{"name":"requests.md","path":"requests.md","contentType":"file"},{"name":"responses.md","path":"responses.md","contentType":"file"},{"name":"routing.md","path":"routing.md","contentType":"file"},{"name":"scheduling.md","path":"scheduling.md","contentType":"file"},{"name":"seeding.md","path":"seeding.md","contentType":"file"},{"name":"session.md","path":"session.md","contentType":"file"},{"name":"structure.md","path":"structure.md","contentType":"file"},{"name":"testing.md","path":"testing.md","contentType":"file"},{"name":"upgrade.md","path":"upgrade.md","contentType":"file"},{"name":"validation.md","path":"validation.md","contentType":"file"},{"name":"views.md","path":"views.md","contentType":"file"},{"name":"изменения.txt","path":"изменения.txt","contentType":"file"}],"totalCount":59}},"fileTreeProcessingTime":8.910159,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":54715842,"defaultBranch":"5.2","name":"docs","ownerLogin":"vniko","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2016-03-25T11:53:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/11040360?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"5.2","listCacheKey":"v0:1613834534.501496","canEdit":false,"refType":"branch","currentOid":"a3e2dde9a8238f2c387c9ab0e27f2134568e77f8"},"path":"database.md","currentUser":null,"blob":{"rawLines":null,"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/vniko/docs/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"database.md","displayUrl":"https://github.com/vniko/docs/blob/5.2/database.md?raw=true","headerInfo":{"blobSize":"10.7 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"cd9fb2e","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fvniko%2Fdocs%2Fblob%2F5.2%2Fdatabase.md","isCSV":false,"isRichtext":true,"toc":[{"level":1,"text":"База данных: основы","anchor":"база-данных-основы","htmlText":"База данных: основы"},{"level":2,"text":"Введение","anchor":"введение","htmlText":"Введение"},{"level":3,"text":"Настройка","anchor":"настройка","htmlText":"Настройка"},{"level":4,"text":"Настройка SQL Server","anchor":"настройка-sql-server","htmlText":"Настройка SQL Server"},{"level":4,"text":"SQL Server Configuration","anchor":"sql-server-configuration","htmlText":"SQL Server Configuration"},{"level":4,"text":"Подключения для чтения/записи","anchor":"подключения-для-чтениязаписи","htmlText":"Подключения для чтения/записи"},{"level":2,"text":"Запросы на чистом SQL","anchor":"запросы-на-чистом-sql","htmlText":"Запросы на чистом SQL"},{"level":4,"text":"SQL запросы","anchor":"sql-запросы","htmlText":"SQL запросы"},{"level":4,"text":"Именованные параметры запроса","anchor":"именованные-параметры-запроса","htmlText":"Именованные параметры запроса"},{"level":4,"text":"Вставка","anchor":"вставка","htmlText":"Вставка"},{"level":4,"text":"Обновление","anchor":"обновление","htmlText":"Обновление"},{"level":4,"text":"Удаление","anchor":"удаление","htmlText":"Удаление"},{"level":4,"text":"Иные запросы к БД","anchor":"иные-запросы-к-бд","htmlText":"Иные запросы к БД"},{"level":3,"text":"Постобработчик запросов","anchor":"постобработчик-запросов","htmlText":"Постобработчик запросов"},{"level":2,"text":"Транзакции","anchor":"транзакции","htmlText":"Транзакции"},{"level":4,"text":"Ручные транзакции","anchor":"ручные-транзакции","htmlText":"Ручные транзакции"},{"level":2,"text":"Использолвание нескольких подключений к БД","anchor":"использолвание-нескольких-подключений-к-бд","htmlText":"Использолвание нескольких подключений к БД"}],"lineInfo":{"truncatedLoc":"218","truncatedSloc":"150"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/vniko/docs/blob/5.2/database.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/vniko/docs/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/vniko/docs/raw/refs/heads/5.2/database.md","renderImageOrRaw":false,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cp dir=\"auto\"\u003egit 4c0f790943685aeb4aef0a47b05817877cd943ca\u003c/p\u003e\n\u003chr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eБаза данных: основы\u003c/h1\u003e\u003ca id=\"user-content-база-данных-основы\" class=\"anchor\" aria-label=\"Permalink: База данных: основы\" href=\"#база-данных-основы\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#introduction\"\u003eВведение\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#running-queries\"\u003eSQL запросы\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#listening-for-query-events\"\u003eПостобработчик запросов\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#database-transactions\"\u003eТранзакции\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#accessing-connections\"\u003eИспользование нескольких подключений к БД\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-introduction\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eВведение\u003c/h2\u003e\u003ca id=\"user-content-введение\" class=\"anchor\" aria-label=\"Permalink: Введение\" href=\"#введение\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eLaravel делает работу с БД чрезвычайно простой благодаря возможности работы на трех уровнях: на чистом SQL, через конструктор запросов \u003ca href=\"/vniko/docs/blob/5.2/docs/%7B%7Bversion%7D%7D/queries\"\u003efluent query builder\u003c/a\u003e, через объектные модели \u003ca href=\"/vniko/docs/blob/5.2/docs/%7B%7Bversion%7D%7D/eloquent\"\u003eEloquent ORM\u003c/a\u003e. Laravel поддерживает четыре СУБД:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eMySQL\u003c/li\u003e\n\u003cli\u003ePostgres\u003c/li\u003e\n\u003cli\u003eSQLite\u003c/li\u003e\n\u003cli\u003eSQL Server\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-configuration\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eНастройка\u003c/h3\u003e\u003ca id=\"user-content-настройка\" class=\"anchor\" aria-label=\"Permalink: Настройка\" href=\"#настройка\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eФайл настройки БД находится в \u003ccode\u003econfig/database.php\u003c/code\u003e. В нем можно опеределить все подключения к БД, задать подключение по умолчанию. Также в файле есть примеры для всех СУБД. Конфигурация по умолчанию готова для работы с виртуальной машиной \u003ca href=\"/vniko/docs/blob/5.2/docs/%7B%7Bversion%7D%7D/homestead\"\u003eLaravel Homestead\u003c/a\u003e, которая удобна для разработки на локальной машине. Конечно, вы можете менять конфигурацию в файле под ваши нужды.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eНастройка SQL Server\u003c/h4\u003e\u003ca id=\"user-content-настройка-sql-server\" class=\"anchor\" aria-label=\"Permalink: Настройка SQL Server\" href=\"#настройка-sql-server\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSQL Server Configuration\u003c/h4\u003e\u003ca id=\"user-content-sql-server-configuration\" class=\"anchor\" aria-label=\"Permalink: SQL Server Configuration\" href=\"#sql-server-configuration\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eLaravel поддерживает SQL Server \"из коробки\", однако, в файл настройки требуется добавить параметры подключения:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"'sqlsrv' =\u0026gt; [\n 'driver' =\u0026gt; 'sqlsrv',\n 'host' =\u0026gt; env('DB_HOST', 'localhost'),\n 'database' =\u0026gt; env('DB_DATABASE', 'forge'),\n 'username' =\u0026gt; env('DB_USERNAME', 'forge'),\n 'password' =\u0026gt; env('DB_PASSWORD', ''),\n 'charset' =\u0026gt; 'utf8',\n 'prefix' =\u0026gt; '',\n],\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e'sqlsrv' =\u0026gt; [\n 'driver' =\u0026gt; 'sqlsrv',\n 'host' =\u0026gt; env('DB_HOST', 'localhost'),\n 'database' =\u0026gt; env('DB_DATABASE', 'forge'),\n 'username' =\u0026gt; env('DB_USERNAME', 'forge'),\n 'password' =\u0026gt; env('DB_PASSWORD', ''),\n 'charset' =\u0026gt; 'utf8',\n 'prefix' =\u0026gt; '',\n],\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-read-write-connections\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eПодключения для чтения/записи\u003c/h4\u003e\u003ca id=\"user-content-подключения-для-чтениязаписи\" class=\"anchor\" aria-label=\"Permalink: Подключения для чтения/записи\" href=\"#подключения-для-чтениязаписи\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eЕсли необходимо настроить раздельные подключения для чтения (SELECT) и изменения данных (INSERT, UPDATE, and DELETE),\nто Laravel позваоляет это сделать на одном дыхании. Соответствующее подключение будет автоматически использоваться при работе с БД любым из способов: чистый SQL, конструктор запросов, объектные модели (Eloquent ORM)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eПример настройки раздельных подключений для чтения/записи:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"'mysql' =\u0026gt; [\n 'read' =\u0026gt; [\n 'host' =\u0026gt; '192.168.1.1',\n ],\n 'write' =\u0026gt; [\n 'host' =\u0026gt; '196.168.1.2'\n ],\n 'driver' =\u0026gt; 'mysql',\n 'database' =\u0026gt; 'database',\n 'username' =\u0026gt; 'root',\n 'password' =\u0026gt; '',\n 'charset' =\u0026gt; 'utf8',\n 'collation' =\u0026gt; 'utf8_unicode_ci',\n 'prefix' =\u0026gt; '',\n],\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e'mysql' =\u0026gt; [\n 'read' =\u0026gt; [\n 'host' =\u0026gt; '192.168.1.1',\n ],\n 'write' =\u0026gt; [\n 'host' =\u0026gt; '196.168.1.2'\n ],\n 'driver' =\u0026gt; 'mysql',\n 'database' =\u0026gt; 'database',\n 'username' =\u0026gt; 'root',\n 'password' =\u0026gt; '',\n 'charset' =\u0026gt; 'utf8',\n 'collation' =\u0026gt; 'utf8_unicode_ci',\n 'prefix' =\u0026gt; '',\n],\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eОбратите внимание, что в массив настройки были добавлены два ключа: \u003ccode\u003eread\u003c/code\u003e and \u003ccode\u003ewrite\u003c/code\u003e. Каждый из них является массивом, в котором содержится единственный ключ: \u003ccode\u003ehost\u003c/code\u003e. Остальные опции подключений являются общими и заданы непосредственно в массиве \u003ccode\u003emysql\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eТаким образом, нам нужно будет добавлять параметры в массивы \u003ccode\u003eread\u003c/code\u003e и \u003ccode\u003ewrite\u003c/code\u003e, только, если мы хотим переписать значения этих параметров в основном массиве. Так в приведенном примере хост \u003ccode\u003e192.168.1.1\u003c/code\u003e будет использоваться для чтения, а \u003ccode\u003e192.168.1.2\u003c/code\u003e для записи. Учетные данные, префикс, кодировка и все другие опции в массиве \u003ccode\u003emysql\u003c/code\u003e будут общими для обоих подключений.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-running-queries\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eЗапросы на чистом SQL\u003c/h2\u003e\u003ca id=\"user-content-запросы-на-чистом-sql\" class=\"anchor\" aria-label=\"Permalink: Запросы на чистом SQL\" href=\"#запросы-на-чистом-sql\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eПосле настройки подключения к БД вы можете делать запросы, используя фасад \u003ccode\u003eDB\u003c/code\u003e. Фасад предоставляет методы для каждого типа запроса: \u003ccode\u003eselect\u003c/code\u003e, \u003ccode\u003eupdate\u003c/code\u003e, \u003ccode\u003einsert\u003c/code\u003e, \u003ccode\u003edelete\u003c/code\u003e, и \u003ccode\u003estatement\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSQL запросы\u003c/h4\u003e\u003ca id=\"user-content-sql-запросы\" class=\"anchor\" aria-label=\"Permalink: SQL запросы\" href=\"#sql-запросы\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eДля простого запроса мы можем использовать метод \u003ccode\u003eselect\u003c/code\u003e фасада \u003ccode\u003eDB\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"\u0026lt;?php\n\nnamespace App\\Http\\Controllers;\n\nuse DB;\nuse App\\Http\\Controllers\\Controller;\n\nclass UserController extends Controller\n{\n /**\n * Show a list of all of the application's users.\n *\n * @return Response\n */\n public function index()\n {\n $users = DB::select('select * from users where active = ?', [1]);\n\n return view('user.index', ['users' =\u0026gt; $users]);\n }\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e\u0026lt;?php\n\nnamespace App\\Http\\Controllers;\n\nuse DB;\nuse App\\Http\\Controllers\\Controller;\n\nclass UserController extends Controller\n{\n /**\n * Show a list of all of the application's users.\n *\n * @return Response\n */\n public function index()\n {\n $users = DB::select('select * from users where active = ?', [1]);\n\n return view('user.index', ['users' =\u0026gt; $users]);\n }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eПервый аргумент метода \u003ccode\u003eselect\u003c/code\u003e - это строка, содержащая запрос на чистом SQL, второй аргумент - массив со значениями,\nподставляемыми в запрос. Обычно эти значения используется в выражении \u003ccode\u003ewhere\u003c/code\u003e. Такая привязка параметров защищает от SQL инъекций.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eМетод \u003ccode\u003eselect\u003c/code\u003e всегда возвращает массив. Каждое значение в массиве будет объектом PHP \u003ccode\u003eStdClass\u003c/code\u003e, предоставляющим доступ к значениям результата запроса:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"foreach ($users as $user) {\n echo $user-\u0026gt;name;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eforeach ($users as $user) {\n echo $user-\u0026gt;name;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eИменованные параметры запроса\u003c/h4\u003e\u003ca id=\"user-content-именованные-параметры-запроса\" class=\"anchor\" aria-label=\"Permalink: Именованные параметры запроса\" href=\"#именованные-параметры-запроса\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eВместо использования \u003ccode\u003e?\u003c/code\u003e, указывающего на привязку параметра к запросу, вы можете использовать имя:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$results = DB::select('select * from users where id = :id', ['id' =\u0026gt; 1]);\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$results = DB::select('select * from users where id = :id', ['id' =\u0026gt; 1]);\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eВставка\u003c/h4\u003e\u003ca id=\"user-content-вставка\" class=\"anchor\" aria-label=\"Permalink: Вставка\" href=\"#вставка\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eДля вставки записей в БД используется метод \u003ccode\u003einsert\u003c/code\u003e фасада \u003ccode\u003eDB\u003c/code\u003e. Использование метода подобно методу \u003ccode\u003eselect\u003c/code\u003e, где первый аргумент - запрос на SQL, второй - параметры:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eDB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eОбновление\u003c/h4\u003e\u003ca id=\"user-content-обновление\" class=\"anchor\" aria-label=\"Permalink: Обновление\" href=\"#обновление\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eМетод \u003ccode\u003eupdate\u003c/code\u003e используется для обновления записей в БД. Возвращает количество обновленных строк:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$affected = DB::update('update users set votes = 100 where name = ?', ['John']);\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$affected = DB::update('update users set votes = 100 where name = ?', ['John']);\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eУдаление\u003c/h4\u003e\u003ca id=\"user-content-удаление\" class=\"anchor\" aria-label=\"Permalink: Удаление\" href=\"#удаление\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eМетод \u003ccode\u003edelete\u003c/code\u003e используется для удаления записей из таблицы. Возвращает количество удаленных строк:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$deleted = DB::delete('delete from users');\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$deleted = DB::delete('delete from users');\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eИные запросы к БД\u003c/h4\u003e\u003ca id=\"user-content-иные-запросы-к-бд\" class=\"anchor\" aria-label=\"Permalink: Иные запросы к БД\" href=\"#иные-запросы-к-бд\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eИспользуйте метод \u003ccode\u003estatement\u003c/code\u003e фасада \u003ccode\u003eDB\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"DB::statement('drop table users');\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eDB::statement('drop table users');\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-listening-for-query-events\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eПостобработчик запросов\u003c/h3\u003e\u003ca id=\"user-content-постобработчик-запросов\" class=\"anchor\" aria-label=\"Permalink: Постобработчик запросов\" href=\"#постобработчик-запросов\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eЕсли вы хотите получать каждый SQL запрос, выполненый приложением, используйте метод \u003ccode\u003elisten\u003c/code\u003e. Этот метод полезен для\nлогирования и отладки запросов. Регистрация постобработчика в \u003ca href=\"/vniko/docs/blob/5.2/docs/%7B%7Bversion%7D%7D/providers\"\u003eservice provider\u003c/a\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"\u0026lt;?php\n\nnamespace App\\Providers;\n\nuse DB;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvider\n{\n /**\n * Bootstrap any application services.\n *\n * @return void\n */\n public function boot()\n {\n DB::listen(function($query) {\n // $query-\u0026gt;sql\n // $query-\u0026gt;bindings\n // $query-\u0026gt;time\n });\n }\n\n /**\n * Register the service provider.\n *\n * @return void\n */\n public function register()\n {\n //\n }\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e\u0026lt;?php\n\nnamespace App\\Providers;\n\nuse DB;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvider\n{\n /**\n * Bootstrap any application services.\n *\n * @return void\n */\n public function boot()\n {\n DB::listen(function($query) {\n // $query-\u0026gt;sql\n // $query-\u0026gt;bindings\n // $query-\u0026gt;time\n });\n }\n\n /**\n * Register the service provider.\n *\n * @return void\n */\n public function register()\n {\n //\n }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-database-transactions\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eТранзакции\u003c/h2\u003e\u003ca id=\"user-content-транзакции\" class=\"anchor\" aria-label=\"Permalink: Транзакции\" href=\"#транзакции\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eДля использования транзакций предназначен метод \u003ccode\u003etransaction\u003c/code\u003e фасада \u003ccode\u003eDB\u003c/code\u003e. Если будет брошено исключение в функции-замыкании, то транзакция будет отменена. Если транзакция успешна, то она будет автоматически завершена(committed). Вам не требуется вручную делать откат или завершение (committing) при использовании этого метода:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"DB::transaction(function () {\n DB::table('users')-\u0026gt;update(['votes' =\u0026gt; 1]);\n\n DB::table('posts')-\u0026gt;delete();\n});\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eDB::transaction(function () {\n DB::table('users')-\u0026gt;update(['votes' =\u0026gt; 1]);\n\n DB::table('posts')-\u0026gt;delete();\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eРучные транзакции\u003c/h4\u003e\u003ca id=\"user-content-ручные-транзакции\" class=\"anchor\" aria-label=\"Permalink: Ручные транзакции\" href=\"#ручные-транзакции\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eЕсли требуется начать транзакцию вручную и иметь полный контроль над откатами и завершениями используйте метод \u003ccode\u003ebeginTransaction\u003c/code\u003e фасада \u003ccode\u003eDB\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"DB::beginTransaction();\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eDB::beginTransaction();\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eОткат транзакции:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"DB::rollBack();\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eDB::rollBack();\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eЗавершение транзакции:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"DB::commit();\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003eDB::commit();\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eПримечание:\u003c/strong\u003e Используйте перечисленные методы для ручного управления транзакциями при работе с\n\u003ca href=\"/vniko/docs/blob/5.2/docs/%7B%7Bversion%7D%7D/queries\"\u003equery builder\u003c/a\u003e и \u003ca href=\"/vniko/docs/blob/5.2/docs/%7B%7Bversion%7D%7D/eloquent\"\u003eEloquent ORM\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp dir=\"auto\"\u003e\u003ca name=\"user-content-accessing-connections\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eИспользолвание нескольких подключений к БД\u003c/h2\u003e\u003ca id=\"user-content-использолвание-нескольких-подключений-к-бд\" class=\"anchor\" aria-label=\"Permalink: Использолвание нескольких подключений к БД\" href=\"#использолвание-нескольких-подключений-к-бд\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eПри использовании нескольких подключений доступ к каждому из них можно получить через метод \u003ccode\u003econnection\u003c/code\u003e. Методу необходимо передать имя подключения, которое должно соответствовать одному из имен в файле настройки БД \u003ccode\u003econfig/database.php\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$users = DB::connection('foo')-\u0026gt;select(...);\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$users = DB::connection('foo')-\u0026gt;select(...);\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eВы также можете получить низкоуровневый объект PDO для текущего подключения:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"$pdo = DB::connection()-\u0026gt;getPdo();\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e$pdo = DB::connection()-\u0026gt;getPdo();\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/article\u003e","renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":null},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"isMarketplaceEnabled":true,"csrf_tokens":{"/vniko/docs/branches":{"post":"fIVOq9k_SiRNolJgYhp5OPTxpOdhS_vV9_-n4HhRTT6LHHYw_UF7RE9ZklpKmZW674-TMlBVhDgOUeyXDKO92g"},"/repos/preferences":{"post":"TEQgRnOJAYpxI9Wr_KrHv8GD6qyo9vGcKThuJXaquSPc5N71BHVy3XFehpWjltXk3D1bA0gBv2zo9O2yJ5uaFg"}}},"title":"docs/database.md at 5.2 · vniko/docs","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-98e6e9db3609.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0