{"id":979,"date":"2025-06-12T04:06:14","date_gmt":"2025-06-11T20:06:14","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/979.html"},"modified":"2025-06-12T04:06:14","modified_gmt":"2025-06-11T20:06:14","slug":"%e4%bc%98%e9%9b%85-orm%ef%bc%9a%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8%e5%a4%9a%e6%95%b0%e6%8d%ae%e5%ba%93%e8%bf%9e%e6%8e%a5","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/979.html","title":{"rendered":"\u4f18\u96c5 ORM\uff1a\u5982\u4f55\u4f7f\u7528\u591a\u6570\u636e\u5e93\u8fde\u63a5"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#20248;&#38597; ORM &#26159;&#19968;&#31181;&#29992;&#20110;&#31616;&#21270;&#25968;&#25454;&#24211;&#25805;&#20316;&#30340;&#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#24378;&#22823;&#30340;&#21151;&#33021;&#21644;&#28789;&#27963;&#24615;&#12290;&#22312;&#23454;&#38469;&#24212;&#29992;&#20013;&#65292;&#22810;&#25968;&#25454;&#24211;&#36830;&#25509;&#26159;&#24120;&#35265;&#30340;&#38656;&#27714;&#20043;&#19968;&#65292;&#29305;&#21035;&#26159;&#22312;&#38656;&#35201;&#21516;&#26102;&#35775;&#38382;&#22810;&#20010;&#25968;&#25454;&#24211;&#22330;&#26223;&#19979;&#12290;&#19979;&#38754;&#26159;&#22914;&#20309;&#20351;&#29992;&#20248;&#38597; ORM &#36827;&#34892;&#22810;&#25968;&#25454;&#24211;&#36830;&#25509;&#30340;&#35814;&#32454;&#27493;&#39588;&#12290;<\/p>\n<h3>1. &#23433;&#35013;&#20248;&#38597; ORM<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013;&#20248;&#38597; ORM &#30340;&#24211;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807; npm &#25110; yarn &#26469;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">npm install @egjs\/orm<\/code><\/pre>\n<p>&#25110;&#32773;<\/p>\n<pre><code class=\"language-bash\">yarn add @egjs\/orm<\/code><\/pre>\n<h3>2. &#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;<\/h3>\n<p>&#22312;&#20320;&#30340;&#39033;&#30446;&#20013;&#21019;&#24314;&#19968;&#20010;&#37197;&#32622;&#25991;&#20214;&#26469;&#23450;&#20041;&#19981;&#21516;&#30340;&#25968;&#25454;&#24211;&#36830;&#25509;&#20449;&#24687;&#12290;&#20363;&#22914;&#65292;<code>database.config.js<\/code>&#65306;<\/p>\n<pre><code class=\"language-javascript\">export const databases = {\n  default: {\n    host: 'localhost',\n    port: 5432,\n    user: 'postgres',\n    password: 'password',\n    database: 'default_db'\n  },\n  secondDatabase: {\n    host: 'localhost',\n    port: 5432,\n    user: 'postgres',\n    password: 'password',\n    database: 'second_db'\n  }\n};<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#23454;&#20307;&#31867;<\/h3>\n<p>&#23450;&#20041;&#20320;&#30340;&#23454;&#20307;&#31867;&#65292;&#36825;&#20123;&#31867;&#23558;&#26144;&#23556;&#21040;&#25968;&#25454;&#24211;&#34920;&#12290;&#20363;&#22914;&#65292;<code>User.js<\/code>&#65306;<\/p>\n<pre><code class=\"language-javascript\">import { Model } from '@egjs\/orm';\n\nclass User extends Model {\n  static get tableName() {\n    return 'users';\n  }\n\n  static get columns() {\n    return [\n      { name: 'id', type: 'integer', primaryKey: true, autoIncrement: true },\n      { name: 'name', type: 'string' },\n      { name: 'email', type: 'string', unique: true }\n    ];\n  }\n}\n\nexport default User;<\/code><\/pre>\n<h3>4. &#20351;&#29992;&#22810;&#25968;&#25454;&#24211;&#36830;&#25509;<\/h3>\n<p>&#22312;&#20320;&#30340;&#26381;&#21153;&#25110;&#25511;&#21046;&#22120;&#20013;&#65292;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#36873;&#25321;&#19981;&#21516;&#30340;&#25968;&#25454;&#24211;&#36827;&#34892;&#25805;&#20316;&#12290;&#20363;&#22914;&#65292;&#20351;&#29992;&#40664;&#35748;&#25968;&#25454;&#24211;&#65306;<\/p>\n<pre><code class=\"language-javascript\">import { Database } from '@egjs\/orm';\nimport User from '.\/User';\n\nasync function createUser(user) {\n  const db = new Database(databases.default);\n  const result = await db.save(User, user);\n  return result;\n}<\/code><\/pre>\n<p>&#25110;&#32773;&#20351;&#29992;&#31532;&#20108;&#20010;&#25968;&#25454;&#24211;&#65306;<\/p>\n<pre><code class=\"language-javascript\">import { Database } from '@egjs\/orm';\nimport User from '.\/User';\n\nasync function createUserWithSecondDb(user) {\n  const db = new Database(databases.secondDatabase);\n  const result = await db.save(User, user);\n  return result;\n}<\/code><\/pre>\n<h3>5. &#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992;&#20248;&#38597; ORM &#36827;&#34892;&#22810;&#25968;&#25454;&#24211;&#36830;&#25509;&#65306;<\/p>\n<pre><code class=\"language-javascript\">\/\/ database.config.js\nexport const databases = {\n  default: {\n    host: 'localhost',\n    port: 5432,\n    user: 'postgres',\n    password: 'password',\n    database: 'default_db'\n  },\n  secondDatabase: {\n    host: 'localhost',\n    port: 5432,\n    user: 'postgres',\n    password: 'password',\n    database: 'second_db'\n  }\n};\n\n\/\/ User.js\nimport { Model } from '@egjs\/orm';\n\nclass User extends Model {\n  static get tableName() {\n    return 'users';\n  }\n\n  static get columns() {\n    return [\n      { name: 'id', type: 'integer', primaryKey: true, autoIncrement: true },\n      { name: 'name', type: 'string' },\n      { name: 'email', type: 'string', unique: true }\n    ];\n  }\n}\n\nexport default User;\n\n\/\/ UserService.js\nimport { Database } from '@egjs\/orm';\nimport User from '.\/User';\n\nasync function createUser(user) {\n  const db = new Database(databases.default);\n  const result = await db.save(User, user);\n  return result;\n}\n\nasync function createUserWithSecondDb(user) {\n  const db = new Database(databases.secondDatabase);\n  const result = await db.save(User, user);\n  return result;\n}\n\n\/\/ main.js\n(async () =&gt; {\n  try {\n    const newUser = { name: 'John Doe', email: 'john.doe@example.com' };\n    const createdUser = await createUser(newUser);\n    console.log('Created user with default database:', createdUser);\n\n    const newUserWithSecondDb = { name: 'Jane Smith', email: 'jane.smith@example.com' };\n    const createdUserWithSecondDb = await createUserWithSecondDb(newUserWithSecondDb);\n    console.log('Created user with second database:', createdUserWithSecondDb);\n  } catch (error) {\n    console.error(error);\n  }\n})();<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312;&#20248;&#38597; ORM &#20013;&#25104;&#21151;&#23454;&#29616;&#22810;&#25968;&#25454;&#24211;&#36830;&#25509;&#12290;&#36825;&#31181;&#26041;&#27861;&#19981;&#20165;&#25552;&#39640;&#20102;&#20195;&#30721;&#30340;&#21487;&#32500;&#25252;&#24615;&#21644;&#25193;&#23637;&#24615;&#65292;&#36824;&#20351;&#24471;&#25968;&#25454;&#24211;&#25805;&#20316;&#26356;&#21152;&#31616;&#27905;&#21644;&#39640;&#25928;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#22312;&#20351;&#29992;Laravel&#24320;&#21457;&#24212;&#29992;&#26102;&#65292;&#21033;&#29992;&#20854;&#20869;&#32622;&#30340;ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;Eloquent&#36827;&#34892;&#25968;&#25454;&#24211;&#20132;&#20114;&#26159;&#19968;&#31181;&#20248;&#38597;&#30340;&#26041;&#27861;&#12290;&#28982;&#32780;&#65292;&#38543;&#30528;&#24212;&#29992;&#31243;&#24207;&#22797;&#26434;&#24230;&#30340;&#22686;&#21152;&#65292;&#38656;&#35201;&#21516;&#26102;&#36830;&#25509;&#22810;&#20010;&#25968;&#25454;&#24211;&#30340;&#24773;&#20917;&#21464;&#24471;&#36234;&#26469;&#36234;&#24120;&#35265;&#65292;&#36825;&#21487;&#33021;&#26159;&#20026;&#20102;&#20998;&#31163;&#25968;&#25454;&#20851;&#27880;&#28857;&#12289;&#25552;&#21319;&#24615;&#33021;&#25110;&#19982;&#36951;&#30041;&#31995;&#32479;&#21327;&#21516;&#24037;&#20316;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#23398;&#20064;&#22914;&#20309;&#20351;&#29992;Eloquent ORM&#36731;&#26494;&#22788;&#29702;&#22810;&#25968;&#25454;&#24211;&#36830;&#25509;&#12290;<\/p><h2>&#29702;&#35299; eloquent &#37197;&#32622;<\/h2><p>&#22312;&#28145;&#20837;&#22810;&#36830;&#25509;&#20043;&#21069;&#65292;&#29702;&#35299;Laravel&#20013;&#30340;Eloquent&#26159;&#22914;&#20309;&#37197;&#32622;&#30340;&#38750;&#24120;&#37325;&#35201;&#12290;&#25968;&#25454;&#24211;&#35774;&#32622;&#30340;&#40664;&#35748;&#37197;&#32622;&#25991;&#20214;&#36890;&#24120;&#20301;&#20110;<code>config\/database.php<\/code>&#22312;&#36825;&#19968;&#25991;&#20214;&#20013;&#65292;&#24744;&#23558;&#20250;&#25214;&#21040;&#19968;&#20010;<code>connections<\/code>&#25105;&#20204;&#24212;&#29992;&#21487;&#20197;&#20351;&#29992;&#30340;&#36830;&#25509;&#25968;&#32452;&#65292;&#27599;&#20010;&#38190;&#20195;&#34920;&#19968;&#20010;&#36830;&#25509;&#21517;&#31216;&#65292;&#20540;&#21253;&#25324;&#39537;&#21160;&#31243;&#24207;&#12289;&#20027;&#26426;&#21517;&#12289;&#25968;&#25454;&#24211;&#21517;&#12289;&#29992;&#25143;&#21517;&#21644;&#23494;&#30721;&#31561;&#35814;&#32454;&#20449;&#24687;&#12290;<\/p><pre><code>'connections' =&gt; [\n  'mysql' =&gt; [\n    'driver' =&gt; 'mysql',\n    'host' =&gt; env('DB_HOST', '127.0.0.1'),\n    'database' =&gt; env('DB_DATABASE', 'forge'),\n    'username' =&gt; env('DB_USERNAME', 'forge'),\n    'password' =&gt; env('DB_PASSWORD', ''),\n    'charset' =&gt; 'utf8mb4',\n    'collation' =&gt; 'utf8mb4_unicode_ci',\n    'prefix' =&gt; '',\n    'strict' =&gt; true,\n    'engine' =&gt; null,\n  ],\n  \/\/ Additional connections...\n],<\/code><\/pre><p>&#20026;&#20102;&#24314;&#31435;&#21478;&#19968;&#20010;&#25968;&#25454;&#24211;&#36830;&#25509;&#65292;&#20320;&#38656;&#35201;&#22312;&#29616;&#26377;&#30340;&#25968;&#32452;&#19979;&#28155;&#21152;&#19968;&#20010;&#21253;&#21547;&#24744;&#25152;&#38656;&#37197;&#32622;&#30340;&#26032;&#25968;&#32452;&#12290;<code>mysql<\/code>&#36830;&#25509;&#24050;&#32463;&#24314;&#31435;&#12290;<\/p><h2>&#21019;&#24314;&#22810;&#20010;&#36830;&#25509;<\/h2><p>Laravel&#20351;&#24471;&#31649;&#29702;&#22810;&#20010;&#36830;&#25509;&#21464;&#24471;&#36731;&#32780;&#26131;&#20030;&#12290;&#20197;&#19979;&#26159;&#37197;&#32622;&#39069;&#22806;&#36830;&#25509;&#30340;&#27493;&#39588;&#65306;<code>config\/database.php<\/code>&#65306;<\/p><pre><code>'connections' =&gt; [\n  'mysql' =&gt; [\n    \/\/ Primary database connection details...\n  ],\n  'secondary' =&gt; [\n    'driver' =&gt; 'mysql',\n    'host' =&gt; env('SECONDARY_DB_HOST', '127.0.0.2'),\n    'database' =&gt; env('SECONDARY_DB_DATABASE', 'secondary'),\n    'username' =&gt; env('SECONDARY_DB_USERNAME', 'root'),\n    'password' =&gt; env('SECONDARY_DB_PASSWORD', ''),\n    'charset' =&gt; 'utf8',\n    'collation' =&gt; 'utf8_unicode_ci',\n    'prefix' =&gt; '',\n    'strict' =&gt; false,\n    'engine' =&gt; null,\n  ],\n  \/\/ Other connections...\n],<\/code><\/pre><p>&#24403;&#25105;&#20204;&#23450;&#20041;&#20102;&#39069;&#22806;&#30340;&#36830;&#25509;&#21518;&#65292;&#25105;&#20204;&#21487;&#20197;&#26126;&#30830;&#22320;&#21578;&#35785;Eloquent&#27169;&#22411;&#20351;&#29992;&#23427;&#20204;&#12290;<\/p><h2>&#22312;&#27169;&#22411;&#20013;&#25351;&#23450;&#36830;&#25509;&#28857;&#12290;<\/h2><p>&#20320;&#21487;&#20197;&#20026;&#27169;&#22411;&#25351;&#23450;&#29305;&#23450;&#30340;&#36830;&#25509;&#65292;&#36890;&#36807;&#23450;&#20041;&#26469;&#23454;&#29616;&#12290;<code>$connection<\/code>&#20363;&#22914;&#65306;<\/p><pre><code>namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass SecondaryModel extends Model\n{\n  protected $connection = 'secondary';\n\n  \/\/ Model's methods and attributes...\n}<\/code><\/pre><p>&#36890;&#36807;&#36825;&#26679;&#20570;&#65292;&#20219;&#20309;Eloquent&#26597;&#35810;&#37117;&#20250;&#34987;&#33258;&#21160;&#32531;&#23384;&#12290;<code>SecondaryModel<\/code>&#20250;&#29992;&#30340;<code>secondary<\/code>&#36830;&#25509;&#32780;&#19981;&#26159;&#40664;&#35748;&#30340;&#12290;<\/p><h2>&#21160;&#24577;&#36830;&#25509;&#20999;&#25442;<\/h2><p>&#26377;&#26102;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#21160;&#24577;&#20999;&#25442;&#36830;&#25509;&#65292;&#36825;&#21462;&#20915;&#20110;&#29992;&#25143;&#30340;&#25968;&#25454;&#25110;&#35831;&#27714;&#21442;&#25968;&#12290;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992;&#20197;&#19979;&#26041;&#27861;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;<code>setConnection()<\/code>&#26041;&#27861;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>$user = new User;\n$user-&gt;setConnection('secondary');\n$data = $user-&gt;find(1);<\/code><\/pre><p>&#24744;&#30340;&#27169;&#22411;&#23558;&#22312;&#36827;&#34892;&#27492;&#20132;&#26131;&#26102;&#26242;&#26102;&#20999;&#25442;&#21040;&ldquo;&#27425;&#32423;&rdquo;&#36830;&#25509;&#12290;&#27492;&#20999;&#25442;&#19981;&#20250;&#24433;&#21709;&#20840;&#23616;&#27169;&#22411;&#34892;&#20026;&#65292;&#20445;&#25345;&#25805;&#20316;&#32039;&#23494;&#19988;&#29305;&#23450;&#20110;&#19978;&#19979;&#25991;&#12290;<\/p><h2>&#21407;&#22987;&#26597;&#35810;&#21644;&#22810;&#20010;&#36830;&#25509;<\/h2><p>&#21407;&#22987;&#25968;&#25454;&#24211;&#26597;&#35810;&#20063;&#21487;&#20197;&#22312;&#19981;&#21516;&#30340;&#36830;&#25509;&#19978;&#25191;&#34892;&#12290;&#24744;&#21487;&#20197;&#20351;&#29992;&#36825;&#20010;&#12290;<code>DB<\/code>facade&#30340;<code>connection()<\/code>&#26041;&#27861;&#65306;<\/p><pre><code>use IlluminateSupportFacadesDB;\n\n$results = DB::connection('secondary')-&gt;select('SELECT * FROM table_name');<\/code><\/pre><p>&#36825;&#31181;&#20570;&#27861;&#20250;&#25191;&#34892;&#24744;&#27425;&#32423;&#25968;&#25454;&#24211;&#19978;&#30340;&#26597;&#35810;&#12290;&#22312;&#22788;&#29702;&#21407;&#22987;&#26597;&#35810;&#26102;&#65292;&#24635;&#26159;&#35201;&#23545;&#36755;&#20837;&#36827;&#34892;&#28165;&#29702;&#20197;&#38450;&#27490;SQL&#27880;&#20837;&#25915;&#20987;&#12290;<\/p><h2>&#20351;&#29992;&#22810;&#20010;&#25968;&#25454;&#24211;&#19982;&#36801;&#31227;&#31649;&#29702;<\/h2><p>Laravel&#30340;&#36801;&#31227;&#31995;&#32479;&#25903;&#25345;&#22810;&#20010;&#25968;&#25454;&#24211;&#12290;&#22312;&#36816;&#34892;&#36801;&#31227;&#26102;&#65292;&#21487;&#20197;&#36890;&#36807;&#25351;&#23450;&#36830;&#25509;&#26469;&#20351;&#29992;&#23427;&#12290;<code>--database<\/code>&#26071;&#26631;&#12290;&#24744;&#36824;&#21487;&#20197;&#22312;&#36801;&#31227;&#25991;&#20214;&#20013;&#30452;&#25509;&#23450;&#20041;&#19968;&#20010;&#36830;&#25509;&#65292;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p><pre><code>public function up()\n{\n  Schema::connection('secondary')-&gt;create('some_table', function ($table) {\n    $table-&gt;bigIncrements('id');\n    \/\/ Other columns...\n  });\n}<\/code><\/pre><p>&#21516;&#26679;&#65292;&#20174;&#29305;&#23450;&#30340;&#36830;&#25509;&#22238;&#28378;&#36801;&#31227;&#20063;&#24456;&#26041;&#20415;&#65292;&#20320;&#21487;&#20197;&#21033;&#29992;&#36830;&#25509;&#26041;&#27861;&#36827;&#34892;&#25805;&#20316;&#12290;<code>Schema::connection('secondary')<\/code>&#22312;down&#26041;&#27861;&#20013;&#12290;<\/p><h2>&#22788;&#29702;&#22810;&#20010;&#25968;&#25454;&#24211;&#30340;&#25552;&#31034;&#12290;<\/h2><p>&#22312;&#36328;&#25968;&#25454;&#24211;&#20107;&#21153;&#22788;&#29702;&#26102;&#35201;&#38750;&#24120;&#23567;&#24515;&#65292;&#36825;&#21487;&#33021;&#20250;&#23548;&#33268;&#25968;&#25454;&#23436;&#25972;&#24615;&#30340;&#38382;&#39064;&#12290;<\/p><p>&#22312;&#24320;&#21457;&#36807;&#31243;&#20013;&#23450;&#26399;&#22791;&#20221;&#25968;&#25454;&#65292;&#22240;&#20026;&#28041;&#21450;&#21040;&#22810;&#20010;&#25968;&#25454;&#24211;&#12290;<\/p><p>&#20026;&#27599;&#20010;&#36830;&#25509;&#20445;&#30041;&#21333;&#29420;&#30446;&#24405;&#30340;&#36801;&#31227;&#25991;&#20214;&#65292;&#20197;&#20445;&#25345;&#28165;&#26224;&#24230;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;Laravel&#20013;&#19982;&#22810;&#20010;&#25968;&#25454;&#24211;&#19968;&#36215;&#24037;&#20316;&#26082;&#21487;&#34892;&#21448;&#31616;&#21333;&#12290;&#26080;&#35770;&#26159;&#38745;&#24577;&#25351;&#23450;&#27169;&#22411;&#20013;&#30340;&#25968;&#25454;&#24211;&#36830;&#25509;&#65292;&#36824;&#26159;&#21160;&#24577;&#22320;&#22312;&#36816;&#34892;&#26102;&#26356;&#25913;&#23427;&#20204;&#65292;&#25972;&#20010;&#36807;&#31243;&#37117;&#23545;&#24320;&#21457;&#32773;&#21451;&#22909;&#19988;&#26131;&#20110;&#25805;&#20316;&#65292;&#36825;&#31526;&#21512;Laravel&#30340;&#21475;&#21495;&ldquo;&#20889;&#34920;&#36798;&#24335;&#20248;&#38597;&#30340;&#35821;&#27861;&rdquo;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312;Python&#20013;&#65292;&#25105;&#20204;&#21487;&#20197;&#20351;&#29992;<code>psycopg2<\/code>&#24211;&#26469;&#22788;&#29702;PostgreSQL&#25968;&#25454;&#24211;&#65292;&#23427;&#25552;&#20379;&#20102;&#23545;PostgreSQL&#30340;&#23553;&#35013;&#65292;&#20351;&#24471;&#25105;&#20204;&#19981;&#38656;&#35201;&#20851;&#24515;&#24213;&#23618;&#30340;&#39537;&#21160;&#21644;&#21327;&#35758;&#32454;&#33410;&#12290;&#21516;&#26102;&#65292;&#20026;&#20102;&#26356;&#22909;&#22320;&#31649;&#29702;&#22810;&#20010;&#25968;&#25454;&#24211;&#36830;&#25509;&#65292;&#21487;&#20197;&#20351;&#29992;<code>asyncio<\/code>&#27169;&#22359;&#20013;&#30340;<code>async with<\/code>&#35821;&#21477;&#12290;<\/p>\n<p>&#20197;&#19979;&#26159;&#22914;&#20309;&#22312;Python&#20013;&#20351;&#29992;<code>psycopg2<\/code>&#24211;&#21019;&#24314;&#22810;&#20010;&#25968;&#25454;&#24211;&#36830;&#25509;&#65292;&#24182;&#20351;&#29992;&#36825;&#20123;&#36830;&#25509;&#25191;&#34892;SQL&#26597;&#35810;&#30340;&#20363;&#23376;&#65306;<\/p>\n<pre><code class=\"language-python\">import asyncio\n\n# &#21019;&#24314;&#25968;&#25454;&#24211;&#36830;&#25509;&#27744;\nasync def create_pool():\n    pool = await aiopg.create_pool(\n        user='postgres',\n        host='127.0.0.1',\n        database='mydb',\n        password='password',\n        port=5432,\n        loop=loop\n    )\n    return pool\n\n# &#25191;&#34892;SQL&#26597;&#35810;&#24182;&#36820;&#22238;&#32467;&#26524;&#38598;\nasync def execute_query(pool, query):\n    cursor = await pool.cursor()\n    result = await cursor.execute(query)\n    await cursor.fetchone()\n    await cursor.close()\n\n# &#20351;&#29992;&#22810;&#20010;&#25968;&#25454;&#24211;&#36830;&#25509;&#27744;\npool_a = await create_pool()\npool_b = await create_pool()\n\n# &#36830;&#25509;&#25968;&#25454;&#24211;\nasync with pool_a.acquire() as connection:\n    async with connection.transaction():\n        # &#25191;&#34892;SQL&#26597;&#35810;\n        await execute_query(connection, 'SELECT * FROM my_table')\n\n        # &#20851;&#38381;&#20107;&#21153;\n        await connection.commit()\n        await connection.close()\n\nasync with pool_b.acquire() as connection:\n    async with connection.transaction():\n        # &#25191;&#34892;SQL&#26597;&#35810;\n        await execute_query(connection, 'SELECT * FROM my_table')\n\n        # &#20851;&#38381;&#20107;&#21153;\n        await connection.commit()\n        await connection.close()\n\n# &#20851;&#38381;&#25152;&#26377;&#36830;&#25509;&#27744;\nawait pool_a.release()\nawait pool_b.release()<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#39318;&#20808;&#23450;&#20041;&#20102;&#20004;&#20010;&#25968;&#25454;&#24211;&#36830;&#25509;&#27744;&#20989;&#25968;&#65306;<code>create_pool()<\/code> &#21644; <code>execute_query()<\/code>&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#22312;&#20027;&#20107;&#20214;&#24490;&#29615;&#20013;&#20351;&#29992;<code>async with<\/code>&#35821;&#21477;&#21019;&#24314;&#21644;&#37322;&#25918;&#22810;&#20010;&#25968;&#25454;&#24211;&#36830;&#25509;&#12290;&#27599;&#27425;&#20351;&#29992;&#19968;&#20010;&#26032;&#30340;&#36830;&#25509;&#26102;&#65292;&#37117;&#20250;&#33258;&#21160;&#20851;&#38381;&#35813;&#36830;&#25509;&#65292;&#20174;&#32780;&#36991;&#20813;&#20102;&#36164;&#28304;&#27844;&#28431;&#30340;&#38382;&#39064;&#12290;<\/p>\n<p>&#27880;&#24847;&#65306;&#36825;&#20010;&#20363;&#23376;&#20551;&#35774;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102;<code>aiopg<\/code>&#24211;&#65292;&#24182;&#19988;&#20320;&#30340;&#26381;&#21153;&#22120;&#19978;&#26377;&#19968;&#20010;&#21517;&#20026;<code>mydb<\/code>&#30340;PostgreSQL&#25968;&#25454;&#24211;&#12290;&#20320;&#38656;&#35201;&#26681;&#25454;&#23454;&#38469;&#24773;&#20917;&#35843;&#25972;&#25968;&#25454;&#24211;&#20449;&#24687;&#65288;&#29992;&#25143;&#21517;&#12289;&#23494;&#30721;&#31561;&#65289;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#20248;&#38597; ORM &#26159;&#19968;&#31181;&#29992;&#20110;&#31616;&#21270;&#25968;&#25454;&#24211;&#25805;&#20316;&#30340;&#038;#26694..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-979","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=979"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=979"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=979"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}