{"id":1087,"date":"2025-06-12T12:33:44","date_gmt":"2025-06-12T04:33:44","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1087.html"},"modified":"2025-06-12T12:33:44","modified_gmt":"2025-06-12T04:33:44","slug":"php-doctrine-%e5%a6%82%e4%bd%95%e8%bf%9e%e6%8e%a5%e5%88%b0-sqlite-%e6%95%b0%e6%8d%ae%e5%ba%93","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1087.html","title":{"rendered":"PHP Doctrine: \u5982\u4f55\u8fde\u63a5\u5230 SQLite \u6570\u636e\u5e93"},"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>&#35201;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; SQLite &#25968;&#25454;&#24211;&#65292;&#20320;&#38656;&#35201;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#36827;&#34892;&#25805;&#20316;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#23433;&#35013; Doctrine ORM<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; Doctrine ORM&#12290;&#20320;&#21487;&#20197;&#36890;&#36807; Composer &#26469;&#23433;&#35013;&#23427;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require doctrine\/orm<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010; <code>config\/doctrine.yaml<\/code> &#25991;&#20214;&#26469;&#37197;&#32622;&#25968;&#25454;&#24211;&#36830;&#25509;&#12290;&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>database.sqlite<\/code> &#30340; SQLite &#25968;&#25454;&#24211;&#25991;&#20214;&#65292;&#24182;&#19988;&#20320;&#24819;&#23558;&#23427;&#25918;&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#12290;<\/p>\n<pre><code class=\"language-yaml\">doctrine:\n   dbal:\n       default_connection: default\n       connections:\n           default:\n               driver: pdo_sqlite\n               url: file:%kernel.project_dir%\/database.sqlite\n               charset: utf8mb4\n               options:\n                   encoding: UTF-8<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#23454;&#20307;&#31867;<\/strong>&#65306;\n&#23450;&#20041;&#20320;&#30340;&#23454;&#20307;&#31867;&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#20320;&#26377;&#19968;&#20010; <code>User<\/code> &#23454;&#20307;&#31867;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppEntity;\n\nuse DoctrineORMMapping as ORM;\n\n\/**\n* @ORMEntity(repositoryClass=\"AppRepositoryUserRepository\")\n*\/\nclass User\n{\n   \/**\n    * @ORMId\n    * @ORMGeneratedValue(strategy=\"AUTO\")\n    * @ORMColumn(type=\"integer\")\n    *\/\n   private $id;\n\n   \/**\n    * @ORMColumn(type=\"string\", length=255)\n    *\/\n   private $username;\n\n   \/\/ Getters and Setters\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#23454;&#20307;&#26144;&#23556;<\/strong>&#65306;\n&#22312; <code>src\/Entity\/User.php<\/code> &#20013;&#65292;&#28155;&#21152; <code>@ORMTable<\/code> &#27880;&#35299;&#20197;&#23450;&#20041;&#34920;&#32467;&#26500;&#65306;<\/p>\n<pre><code class=\"language-php\">\/**\n* @ORMTable(name=\"users\")\n*\/<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#23454;&#20307;&#20179;&#24211;<\/strong>&#65306;\n&#20026;&#20102;&#26041;&#20415;&#25805;&#20316;&#23454;&#20307;&#65292;&#21019;&#24314;&#19968;&#20010;&#23454;&#20307;&#20179;&#24211;&#31867;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppRepository;\n\nuse DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;\nuse AppEntityUser;\n\n\/**\n* @extends ServiceEntityRepository&lt;User&gt;\n*\/\nclass UserRepository extends ServiceEntityRepository\n{\n   public function __construct(ManagerRegistry $registry)\n   {\n       parent::__construct($registry, User::class);\n   }\n\n   \/\/ Additional methods for querying users\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#32534;&#20889;&#25511;&#21046;&#22120;<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#29992;&#25143;&#35831;&#27714;&#12290;&#20363;&#22914;&#65292;&#21019;&#24314;&#19968;&#20010; <code>UserController<\/code>&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentRoutingAnnotationRoute;\nuse AppEntityUser;\nuse AppRepositoryUserRepository;\n\nclass UserController extends AbstractController\n{\n   private $userRepository;\n\n   public function __construct(UserRepository $userRepository)\n   {\n       $this-&gt;userRepository = $userRepository;\n   }\n\n   \/**\n    * @Route(\"\/users\", name=\"app_users_index\")\n    *\/\n   public function index(Request $request): Response\n   {\n       $users = $this-&gt;userRepository-&gt;findAll();\n\n       return $this-&gt;render('user\/index.html.twig', [\n           'users' =&gt; $users,\n       ]);\n   }\n\n   \/**\n    * @Route(\"\/users\/new\", name=\"app_users_new\")\n    *\/\n   public function new(Request $request): Response\n   {\n       $form = $this-&gt;createForm(UserType::class);\n\n       if ($form-&gt;isSubmitted() &amp;&amp; $form-&gt;isValid()) {\n           $user = $form-&gt;getData();\n           $this-&gt;userRepository-&gt;save($user, true);\n\n           return $this-&gt;redirectToRoute('app_users_index');\n       }\n\n       return $this-&gt;render('user\/new.html.twig', [\n           'form' =&gt; $form-&gt;createView(),\n       ]);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#35270;&#22270;<\/strong>&#65306;\n&#21019;&#24314;&#30456;&#24212;&#30340; HTML &#35270;&#22270;&#25991;&#20214;&#65288;&#20363;&#22914; <code>templates\/user\/index.html.twig<\/code> &#21644; <code>templates\/user\/new.html.twig<\/code>&#65289;&#26469;&#26174;&#31034;&#21644;&#32534;&#36753;&#29992;&#25143;&#25968;&#25454;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; SQLite &#25968;&#25454;&#24211;&#24182;&#36827;&#34892;&#22522;&#26412;&#30340; CRUD &#25805;&#20316;&#20102;&#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;&#36825;&#27425;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#32034;&#22914;&#20309;&#20351;&#29992;Doctrine ORM&#65288;&#23545;&#35937;&#20851;&#31995;&#26144;&#23556;&#65289;&#36830;&#25509;&#21040;SQLite&#25968;&#25454;&#24211;&#12290;Doctrine&#26159;&#19968;&#20010;&#24378;&#22823;&#30340;ORM&#65292;&#20801;&#35768;&#24320;&#21457;&#20154;&#21592;&#20197;&#38754;&#21521;&#23545;&#35937;&#30340;&#26041;&#24335;&#19982;&#25968;&#25454;&#24211;&#20132;&#20114;&#12290;&#36890;&#36807;&#20351;&#29992;Doctrine&#21644;SQLite&#65292;&#25105;&#20204;&#21487;&#20197;&#21033;&#29992;&#20854;&#21151;&#33021;&#36827;&#34892;&#24555;&#36895;&#24320;&#21457;&#65292;&#21516;&#26102;&#20445;&#25345;SQLite&#25968;&#25454;&#24211;&#30340;&#31616;&#21333;&#24615;&#12290;&#25105;&#20204;&#20174;&#22522;&#30784;&#24320;&#22987;&#65292;&#36880;&#27493;&#28145;&#20837;&#26356;&#22797;&#26434;&#30340;&#27010;&#24565;&#12290;<\/p><h2>&#23433;&#35013;Doctrine<\/h2><p>&#22312;&#36830;&#25509;&#21040;SQLite&#25968;&#25454;&#24211;&#20043;&#21069;&#65292;&#25105;&#20204;&#38656;&#35201;&#23433;&#35013;Doctrine&#12290;&#25105;&#20204;&#23558;&#20351;&#29992;Composer&#26469;&#31649;&#29702;&#20381;&#36182;&#39033;&#12290;&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#23433;&#35013;Composer&#65292;&#35831;&#22312;&#23448;&#26041;&#32593;&#31449;&#19978;&#25214;&#21040;&#23433;&#35013;&#35828;&#26126;&#12290;&#23433;&#35013;&#23436;&#25104;&#21518;&#65292;&#21487;&#20197;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#23558;Doctrine&#28155;&#21152;&#21040;&#39033;&#30446;&#20013;&#65306;<\/p><pre><code>composer require doctrine\/orm<\/code><\/pre><h2>bootstrap doctine<\/h2><p>&#20026;&#20102;&#20351;&#29992;Doctrine&#65292;&#25105;&#20204;&#38656;&#35201;&#37197;&#32622;&#19968;&#20010;EntityManager&#65292;&#36825;&#26159;Doctrine&#30340;&#20013;&#22830;&#35775;&#38382;&#28857;&#65292;&#31649;&#29702;&#23545;&#35937;&#30340;&#25345;&#20037;&#21270;&#12290;&#20197;&#19979;&#30340;bootstrap&#25991;&#20214;&#35774;&#32622;&#20102;&#37197;&#32622;&#65306;<\/p><pre><code>&lt;?php\n\nuse DoctrineORMToolsSetup;\nuse DoctrineORMEntityManager;\n\nrequire_once 'vendor\/autoload.php';\n\n\/\/ Create a simple default Doctrine ORM configuration for Annotations\n$isDevMode = true;\n$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__.'\/src'), $isDevMode);\n\n\/\/ or if you prefer YAML or XML\n\/\/ $config = Setup::createXMLMetadataConfiguration(array(__DIR__.'\/config\/xml'), $isDevMode);\n\/\/ $config = Setup::createYAMLMetadataConfiguration(array(__DIR__.'\/config\/yaml'), $isDevMode);\n\n\/\/ database configuration parameters\n$conn = array(\n    'driver' =&gt; 'pdo_sqlite',\n    'path' =&gt; __DIR__.'\/db.sqlite',\n);\n\n\/\/ obtaining the entity manager\n$entityManager = EntityManager::create($conn, $config);<\/code><\/pre><h2>&#23450;&#20041;&#23454;&#20307;<\/h2><p>&#20351;&#29992;Doctrine&#65292;&#25105;&#20204;&#23558;&#25968;&#25454;&#24211;&#34920;&#34920;&#31034;&#20026;PHP&#31867;&#65292;&#31216;&#20026;&#23454;&#20307;&#12290;&#36825;&#37324;&#26377;&#19968;&#20010;&#31034;&#20363;&#23454;&#20307;&#65306;<\/p><pre><code>&lt;?php\n\n\/**\n * @Entity @Table(name=\"products\")\n **\/\nclass Product\n{\n    \/** @Id @Column(type=\"integer\") @GeneratedValue **\/\n    protected $id;\n\n    \/** @Column(type=\"string\") **\/\n    protected $name;\n\n    public function getId()\n    {\n        return $this-&gt;id;\n    }\n\n    public function getName()\n    {\n        return $this-&gt;name;\n    }\n\n    public function setName($name)\n    {\n        $this-&gt;name = $name;\n    }\n}<\/code><\/pre><p>&#24403;&#20320;&#23450;&#20041;&#31867;&#26102;&#65292;&#35831;&#30830;&#20445;&#36981;&#24490;Doctrine&#23454;&#20307;&#35268;&#21017;&#12290;&#19968;&#20010;&#23454;&#20307;&#24517;&#39035;&#33267;&#23569;&#26377;&#19968;&#20010;&#23383;&#27573;&#24102;&#26377;@Id&#27880;&#35299;&#25165;&#33021;&#20316;&#20026;&#20027;&#38190;&#20351;&#29992;&#12290;<\/p><h2>&#21019;&#24314;&#25968;&#25454;&#24211;&#27169;&#24335;&#12290;<\/h2><p>&#22312;&#23450;&#20041;&#20102;&#23454;&#20307;&#20043;&#21518;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; cli-config.php &#25991;&#20214;&#21644;Doctrine&#30340;&#21629;&#20196;&#34892;&#24037;&#20855;&#26469;&#21019;&#24314;SQLite&#25968;&#25454;&#24211;&#27169;&#24335;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;cli-config.php&#25991;&#20214;&#30340;&#20363;&#23376;&#65306;<\/p><pre><code>&lt;?php\n\nuse DoctrineORMToolsConsoleConsoleRunner;\n\nrequire_once 'bootstrap.php';\n\n\/\/ replace with mechanism to retrieve EntityManager in your app\n$entityManager = GetEntityManager();\n\nreturn ConsoleRunner::createHelperSet($entityManager);<\/code><\/pre><p>&#23436;&#25104;&#35774;&#32622;&#21518;&#65292;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#20197;&#29983;&#25104;&#25968;&#25454;&#24211;&#27169;&#24335;&#65306;<\/p><pre><code>php vendor\/bin\/doctrine orm:schema-tool:create<\/code><\/pre><h2>&#22312;&#25968;&#25454;&#24211;&#19978;&#25191;&#34892;&#25805;&#20316;<\/h2><p>&#22312;&#25968;&#25454;&#24211;&#35774;&#32622;&#23436;&#25104;&#21518;&#65292;&#21487;&#20197;&#25191;&#34892;&#21019;&#24314;&#12289;&#35835;&#21462;&#12289;&#26356;&#26032;&#21644;&#21024;&#38500;&#35760;&#24405;&#65288;CRUD&#25805;&#20316;&#65289;&#12290;&#20197;&#19979;&#26159;&#21019;&#24314;&#24182;&#20445;&#23384;&#26032;&#20135;&#21697;&#30340;&#27493;&#39588;&#65306;<\/p><pre><code>&lt;?php\n\n\/\/ ... bootstrap.php and Entity\/Product.php included above\n\n$product = new Product();\n$product-&gt;setName('iPhone X');\n\n$entityManager-&gt;persist($product);\n$entityManager-&gt;flush();\n\necho \"Created Product with ID \" . $product-&gt;getId() . \"n\";<\/code><\/pre><p>&#20026;&#20102;&#35835;&#21462;&#25968;&#25454;&#65292;&#21487;&#20197;&#20351;&#29992;EntityManager&#30340;find&#25110;repository&#26041;&#27861;&#65306;<\/p><pre><code>&lt;?php\n\n\/\/ ... bootstrap.php and Entity\/Product.php included above\n\n$productRepository = $entityManager-&gt;getRepository('Product');\n$products = $productRepository-&gt;findAll();\n\nforeach ($products as $product) {\n    echo $product-&gt;getId() . ' - ' . $product-&gt;getName() . \"n\";\n}<\/code><\/pre><p>&#26356;&#26032;&#25968;&#25454;&#38750;&#24120;&#31616;&#21333;&#65292;&#21482;&#38656;&#20462;&#25913;&#23545;&#35937;&#24182;&#35843;&#29992;flush&#21363;&#21487;&#65306;<\/p><pre><code>&lt;?php\n\n\/\/ ... bootstrap.php and Entity\/Product.php included above\n\n$product = $entityManager-&gt;find('Product', $productId);\n$product-&gt;setName('New Product Name');\n$entityManager-&gt;flush();<\/code><\/pre><p>&#21024;&#38500;&#35760;&#24405;&#20063;&#24456;&#31616;&#21333;&#65306;<\/p><pre><code>&lt;?php\n\n\/\/ ... bootstrap.php and Entity\/Product.php included above\n\n$product = $entityManager-&gt;find('Product', $productId);\n$entityManager-&gt;remove($product);\n$entityManager-&gt;flush();<\/code><\/pre><h2>&#39640;&#32423;&#65306;&#20351;&#29992;&#26597;&#35810;&#26500;&#24314;&#22120;<\/h2><p>&#24403;&#38656;&#35201;&#22788;&#29702;&#26356;&#22797;&#26434;&#30340;&#26597;&#35810;&#26102;&#65292;&#21487;&#20197;&#20351;&#29992;Doctrine&#30340;Query Builder&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992;Query Builder&#21019;&#24314;&#33258;&#23450;&#20041;&#26597;&#35810;&#30340;&#20363;&#23376;&#65306;<\/p><pre><code>&lt;?php\n\n\/\/ ... bootstrap.php and Entity\/Product.php included above\n\n$queryBuilder = $entityManager-&gt;createQueryBuilder();\n$queryBuilder-&gt;select('p')\n    -&gt;from('Product', 'p')\n    -&gt;where('p.name = :name')\n    -&gt;setParameter('name', 'iPhone X');\n\n$result = $queryBuilder-&gt;getQuery()-&gt;getResult();\n\nforeach ($result as $product) {\n    echo $product-&gt;getName();\n}<\/code><\/pre><h2>&#22788;&#29702;&#20107;&#21153;&#24615;&#25805;&#20316;<\/h2><p>&#20107;&#21153;&#25805;&#20316;&#22312;&#32500;&#25252;&#25968;&#25454;&#23436;&#25972;&#24615;&#26041;&#38754;&#33267;&#20851;&#37325;&#35201;&#12290;Doctrine &#20107;&#21153;&#31649;&#29702;&#20351;&#29992; EntityManager &#30340;&#20107;&#21153;&#26041;&#27861;&#65306;<\/p><pre><code>&lt;?php\n\n\/\/ ... bootstrap.php and Entity\/Product.php included above\n\ntry {\n    $entityManager-&gt;beginTransaction();\n\n    $product1 = new Product();\n    $product1-&gt;setName('Product 1');\n    $entityManager-&gt;persist($product1);\n\n    $product2 = new Product();\n    $product2-&gt;setName('Product 2');\n    $entityManager-&gt;persist($product2);\n\n    \/\/ More operations...\n\n    $entityManager-&gt;flush();\n    $entityManager-&gt;commit();\n\n    echo \"Both products saved!\";\n} catch (Exception $e) {\n    $entityManager-&gt;rollback();\n    echo \"Transaction failed!\";\n}<\/code><\/pre><p>&#23454;&#20307;&#20165;&#22312;&#20107;&#21153;&#25552;&#20132;&#26102;&#20445;&#23384;&#21040;&#25968;&#25454;&#24211;&#12290;&#22914;&#26524;&#21457;&#29983;&#38169;&#35823;&#65292;&#35813;&#20107;&#21153;&#23558;&#22238;&#28378;&#65292;&#24182;&#19988;&#19981;&#20250;&#25345;&#20037;&#21270;&#20219;&#20309;&#26356;&#25913;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#24050;&#32463;&#30475;&#21040;&#22914;&#20309;&#20351;&#29992;PHP&#20013;&#30340;Doctrine ORM&#19982;SQLite&#25968;&#25454;&#24211;&#35774;&#32622;&#36830;&#25509;&#12289;&#23450;&#20041;&#23454;&#20307;&#20197;&#21450;&#36890;&#36807;Doctrine&#30340;EntityManager&#25191;&#34892;&#21508;&#31181;&#25968;&#25454;&#24211;&#25805;&#20316;&#12290;&#25484;&#25569;&#36825;&#20123;&#22522;&#26412;&#21407;&#29702;&#21518;&#65292;&#24744;&#21487;&#20197;&#20351;&#29992;Doctrine&#21644;SQLite&#21019;&#24314;&#20855;&#26377;&#26377;&#25928;&#25968;&#25454;&#24211;&#23618;&#30340;&#24378;&#22823;PHP&#24212;&#29992;&#31243;&#24207;&#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>&#20026;&#20102;&#20351;&#29992; PHP &#36830;&#25509;&#21040; SQLite &#25968;&#25454;&#24211;&#65292;&#20320;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<h3>&#27493;&#39588; 1: &#23433;&#35013; SQLite3<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#30340;&#31995;&#32479;&#19978;&#23433;&#35013;&#20102; SQLite3&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#35775;&#38382;SQLite&#30340;&#23448;&#26041;&#32593;&#31449;&#65288;<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly93d3cuc3FsaXRlLm9yZy9kb3dubG9hZC5odG1sJUVGJUJDJTg5JUU2JTlEJUE1JUU0JUI4JThCJUU4JUJEJUJEJUU1JTkyJThDJUU1JUFFJTg5JUU4JUEzJTg1\" rel=\"noopener noreferrer nofollow\"><a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly93d3cuc3FsaXRlLm9yZy9kb3dubG9hZC5odG1sJiM2NTI4OTsmIzI2NDY5OyYjMTk5Nzk7JiMzNjczMzsmIzIxNjQ0OyYjMjM0MzM7JiMwMzg7IzM1MDEz\" rel=\"noopener noreferrer nofollow\" rel=\"nofollow\">https:\/\/www.sqlite.org\/download.html&#65289;&#26469;&#19979;&#36733;&#21644;&#23433;&#038;#35013<\/a>;<\/a>&#12290;<\/p>\n<h3>&#27493;&#39588; 2: &#32534;&#20889; SQL &#35821;&#21477;<\/h3>\n<p>&#25171;&#24320;&#32456;&#31471;&#24182;&#36755;&#20837;&#20197;&#19979;&#21629;&#20196;&#26469;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340; SQLite &#25968;&#25454;&#24211;&#25991;&#20214;&#65306;<\/p>\n<pre><code class=\"language-bash\">sqlite3 your_database_name.db<\/code><\/pre>\n<p>&#36825;&#23558;&#25552;&#31034;&#20320;&#36755;&#20837;&#25968;&#25454;&#24211;&#30340;&#21517;&#23383;&#65292;&#28982;&#21518;&#25353;&#19979;&#22238;&#36710;&#38190;&#12290;&#25509;&#19979;&#26469;&#65292;&#36755;&#20837;&#20197;&#19979; SQL &#35821;&#21477;&#20197;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#34920;&#65306;<\/p>\n<pre><code class=\"language-sql\">CREATE TABLE users (\n    id INTEGER PRIMARY KEY,\n    name TEXT NOT NULL,\n    email TEXT UNIQUE NOT NULL\n);<\/code><\/pre>\n<p>&#36825;&#37324;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026; <code>users<\/code> &#30340;&#34920;&#65292;&#20854;&#20013;&#21253;&#21547;&#19977;&#20010;&#23383;&#27573;&#65306;id&#12289;name &#21644; email&#12290;<\/p>\n<h3>&#27493;&#39588; 3: &#36830;&#25509;&#21040; SQLite &#25968;&#25454;&#24211;<\/h3>\n<p>&#22312;&#20320;&#30340; PHP &#33050;&#26412;&#20013;&#65292;&#20320;&#21487;&#20197;&#30452;&#25509;&#20351;&#29992; SQLite3 &#31867;&#26469;&#24314;&#31435;&#19982; SQLite &#25968;&#25454;&#24211;&#30340;&#36830;&#25509;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>db.php<\/code> &#30340;&#25991;&#20214;&#65292;&#24182;&#19988;&#20320;&#24819;&#22312;&#36825;&#20010;&#25991;&#20214;&#20013;&#20351;&#29992; SQLite &#25968;&#25454;&#24211;&#65292;&#21487;&#20197;&#36825;&#26679;&#25805;&#20316;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n$dsn = 'mysql:host=localhost;dbname=your_database_name';\n$username = 'your_username';\n$password = 'your_password';\n\ntry {\n    $pdo = new PDO($dsn, $username, $password);\n\n    \/\/ &#20351;&#29992; PDO &#20989;&#25968;&#25191;&#34892; SQL &#35821;&#21477;\n    $stmt = $pdo-&gt;prepare('SELECT * FROM users');\n    $stmt-&gt;execute();\n\n    \/\/ &#25171;&#21360;&#26597;&#35810;&#32467;&#26524;\n    foreach ($stmt as $row) {\n        echo $row['id'] . ': ' . $row['name'] . '&lt;br&gt;';\n    }\n} catch (PDOException $e) {\n    die('Connection failed: ' . $e-&gt;getMessage());\n}\n?&gt;<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20551;&#35774;&#25968;&#25454;&#24211;&#21517;&#31216;&#20026; <code>your_database_name<\/code>&#65292;&#29992;&#25143;&#21517;&#20026; <code>your_username<\/code>&#65292;&#23494;&#30721;&#20026; <code>your_password<\/code>&#12290;<\/p>\n<h3>&#27880;&#24847;&#20107;&#39033;<\/h3>\n<ul>\n<li>&#30830;&#20445;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#26367;&#25442; <code>localhost<\/code>, <code>your_database_name<\/code>, <code>your_username<\/code> &#21644; <code>your_password<\/code>&#12290;<\/li>\n<li>&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#36816;&#34892;&#27492;&#33050;&#26412;&#26102;&#65292;&#35831;&#30830;&#20445;&#20855;&#26377;&#36275;&#22815;&#30340;&#26435;&#38480;&#26469;&#35775;&#38382; SQLite &#25968;&#25454;&#24211;&#25991;&#20214;&#12290;<\/li>\n<\/ul>\n<p>&#20197;&#19978;&#23601;&#26159;&#20351;&#29992; PHP &#36830;&#25509;&#21040; SQLite &#25968;&#25454;&#24211;&#30340;&#22522;&#26412;&#26041;&#27861;&#12290;&#26681;&#25454;&#38656;&#35201;&#35843;&#25972; SQL &#35821;&#21477;&#20197;&#28385;&#36275;&#29305;&#23450;&#30340;&#38656;&#27714;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#35201;&#20351;&#29992; PHP Doctrine &#36830;&#25509;&#21040; SQLite &#25968;&#25454;&#24211;&#65292;&#20320;&#38656;&#35201;&#038;#2535..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1087","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"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\/1087","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=1087"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1087"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1087"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}