{"id":257,"date":"2019-11-29T14:19:14","date_gmt":"2019-11-29T06:19:14","guid":{"rendered":"https:\/\/wp.dj47.top\/?p=257"},"modified":"2021-10-20T16:16:19","modified_gmt":"2021-10-20T08:16:19","slug":"yii2%e6%95%b0%e6%8d%ae%e5%ba%93curd%e6%b1%87%e6%80%bb%e6%9c%80%e6%96%b0","status":"publish","type":"post","link":"https:\/\/www.djlog.cn\/?p=257","title":{"rendered":"Yii2\u6570\u636e\u5e93CURD\u6c47\u603b\u6700\u65b0"},"content":{"rendered":"<h3 style=\"box-sizing: border-box; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin-top: 20px; margin-bottom: 10px; font-size: 24px; background-color: #ffffff;\">\u57fa\u7840\u67e5\u8be2<\/h3>\n<pre class=\"language-php\"><code>User::find()-&gt;all();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u6240\u6709\u6570\u636e\uff1b\r\n\r\nUser::findOne($id);   \u6b64\u65b9\u6cd5\u8fd4\u56de \u4e3b\u952e id=1  \u7684\u4e00\u6761\u6570\u636e(\u4e3e\u4e2a\u4f8b\u5b50)\uff1b \r\n\r\nUser::find()-&gt;where(['name' =&gt; '\u5c0f\u4f19\u513f'])-&gt;one();   \u6b64\u65b9\u6cd5\u8fd4\u56de ['name' =&gt; '\u5c0f\u4f19\u513f'] \u7684\u4e00\u6761\u6570\u636e\uff1b\r\n\r\nUser::find()-&gt;where(['name' =&gt; '\u5c0f\u4f19\u513f'])-&gt;all();   \u6b64\u65b9\u6cd5\u8fd4\u56de ['name' =&gt; '\u5c0f\u4f19\u513f'] \u7684\u6240\u6709\u6570\u636e\uff1b\r\n\r\nUser::find()-&gt;orderBy('id DESC')-&gt;all();   \u6b64\u65b9\u6cd5\u662f\u6392\u5e8f\u67e5\u8be2\uff1b\r\n\r\nUser::findBySql('SELECT * FROM user')-&gt;all();  \u6b64\u65b9\u6cd5\u662f\u7528 sql  \u8bed\u53e5\u67e5\u8be2 user \u8868\u91cc\u9762\u7684\u6240\u6709\u6570\u636e\uff1b\r\n\r\nUser::findBySql('SELECT * FROM user')-&gt;one();  \u6b64\u65b9\u6cd5\u662f\u7528 sql  \u8bed\u53e5\u67e5\u8be2 user \u8868\u91cc\u9762\u7684\u4e00\u6761\u6570\u636e\uff1b\r\n\r\nUser::find()-&gt;andWhere(['sex' =&gt; '\u7537', 'age' =&gt; '24'])-&gt;count('id');   \u7edf\u8ba1\u7b26\u5408\u6761\u4ef6\u7684\u603b\u6761\u6570\uff1b\r\n\r\nUser::find()-&gt;andFilterWhere(['like', 'name', '\u5c0f\u4f19\u513f']); \u6b64\u65b9\u6cd5\u662f\u7528 like \u67e5\u8be2 name \u7b49\u4e8e \u5c0f\u4f19\u513f\u7684 \u6570\u636e\r\n\r\nUser::find()-&gt;one();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u4e00\u6761\u6570\u636e\uff1b\r\n\r\nUser::find()-&gt;all();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u6240\u6709\u6570\u636e\uff1b\r\n\r\nUser::find()-&gt;count();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u8bb0\u5f55\u7684\u6570\u91cf\uff1b\r\n\r\nUser::find()-&gt;average();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u6307\u5b9a\u5217\u7684\u5e73\u5747\u503c\uff1b\r\n\r\nUser::find()-&gt;min();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u6307\u5b9a\u5217\u7684\u6700\u5c0f\u503c \uff1b\r\n\r\nUser::find()-&gt;max();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u6307\u5b9a\u5217\u7684\u6700\u5927\u503c \uff1b\r\n\r\nUser::find()-&gt;scalar();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u503c\u7684\u7b2c\u4e00\u884c\u7b2c\u4e00\u5217\u7684\u67e5\u8be2\u7ed3\u679c\uff1b\r\n\r\nUser::find()-&gt;column();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u67e5\u8be2\u7ed3\u679c\u4e2d\u7684\u7b2c\u4e00\u5217\u7684\u503c\uff1b\r\n\r\nUser::find()-&gt;exists();    \u6b64\u65b9\u6cd5\u8fd4\u56de\u4e00\u4e2a\u503c\u6307\u793a\u662f\u5426\u5305\u542b\u67e5\u8be2\u7ed3\u679c\u7684\u6570\u636e\u884c\uff1b\r\n\r\nUser::find()-&gt;batch(10);  \u6bcf\u6b21\u53d6 10 \u6761\u6570\u636e \r\n\r\nUser::find()-&gt;each(10);  \u6bcf\u6b21\u53d6 10 \u6761\u6570\u636e\uff0c \u8fed\u4ee3\u67e5\u8be2\r\n\r\n\/\/\u6839\u636esql\u8bed\u53e5\u67e5\u8be2\uff1a\u67e5\u8be2name=test\u7684\u5ba2\u6237\r\nCustomer::model()-&gt;findAllBySql(\"select * from customer where name = test\"); \r\n\r\n\/\/\u6839\u636e\u4e3b\u952e\u67e5\u8be2\uff1a\u67e5\u8be2\u4e3b\u952e\u503c\u4e3a1\u7684\u6570\u636e\r\nCustomer::model()-&gt;findByPk(1); \r\n\r\n\/\/\u6839\u636e\u6761\u4ef6\u67e5\u8be2(\u8be5\u65b9\u6cd5\u662f\u6839\u636e\u6761\u4ef6\u67e5\u8be2\u4e00\u4e2a\u96c6\u5408,\u53ef\u4ee5\u662f\u591a\u4e2a\u6761\u4ef6,\u628a\u6761\u4ef6\u653e\u5230\u6570\u7ec4\u91cc\u9762) \r\nCustomer::model()-&gt;findAllByAttributes(['username'=&gt;'admin']); \r\n\r\n\/\/\u5b50\u67e5\u8be2\r\n$subQuery = (new Query())-&gt;select('COUNT(*)')-&gt;from('customer');\r\n\/\/ SELECT `id`, (SELECT COUNT(*) FROM `customer`) AS `count` FROM `customer`\r\n$query = (new Query())-&gt;select(['id', 'count' =&gt; $subQuery])-&gt;from('customer');\r\n\r\n\/\/\u5173\u8054\u67e5\u8be2\uff1a\u67e5\u8be2\u5ba2\u6237\u8868\uff08customer\uff09\u5173\u8054\u8ba2\u5355\u8868\uff08orders\uff09\uff0c\u6761\u4ef6\u662fstatus=1\uff0c\u5ba2\u6237id\u4e3a1\uff0c\u4ece\u67e5\u8be2\u7ed3\u679c\u7684\u7b2c5\u6761\u5f00\u59cb\uff0c\u67e5\u8be210\u6761\u6570\u636e\r\n$data = (new Query())\r\n    -&gt;select('*')\r\n    -&gt;from('customer')\r\n    -&gt;join('LEFT JOIN','orders','customer.id = orders.customer_id')\r\n    -&gt;where(['status'=&gt;'1','customer.id'=&gt;'1'])\r\n    -&gt;offset(5)\r\n    -&gt;limit(10)\r\n    -&gt;all()<\/code><\/pre>\n<h3 style=\"box-sizing: border-box; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin-top: 20px; margin-bottom: 10px; font-size: 24px; background-color: #ffffff;\">\u76f4\u63a5\u67e5\u8be2<\/h3>\n<pre class=\"language-php\"><code>\/\/createCommand(\u6267\u884c\u539f\u751f\u7684SQL\u8bed\u53e5)  \r\n$sql= \"SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id\";  \r\n$rows=Yii::$app-&gt;db-&gt;createCommand($sql)-&gt;query();  \r\n\r\n\u67e5\u8be2\u8fd4\u56de\u591a\u884c\uff1a    \r\n$command = Yii::$app-&gt;db-&gt;createCommand('SELECT * FROM post');  \r\n$posts = $command-&gt;queryAll();\r\n  \r\n\u8fd4\u56de\u5355\u884c\r\n$command = Yii::$app-&gt;db-&gt;createCommand('SELECT * FROM post WHERE id=1');  \r\n$post = $command-&gt;queryOne();\r\n   \r\n\u67e5\u8be2\u591a\u884c\u5355\u503c\uff1a  \r\n$command = Yii::$app-&gt;db-&gt;createCommand('SELECT title FROM post');  \r\n$titles = $command-&gt;queryColumn();\r\n   \r\n\u67e5\u8be2\u6807\u91cf\u503c\/\u8ba1\u7b97\u503c\uff1a  \r\n$command = Yii::$app-&gt;db-&gt;createCommand('SELECT COUNT(*) FROM post');  \r\n$postCount = $command-&gt;queryScalar();<\/code><\/pre>\n<h3 style=\"box-sizing: border-box; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin-top: 20px; margin-bottom: 10px; font-size: 24px; background-color: #ffffff;\">\u5173\u8054\u67e5\u8be2<\/h3>\n<pre class=\"language-php\"><code>\/**\r\n *\u5ba2\u6237\u8868Model\uff1aCustomerModel \r\n *\u8ba2\u5355\u8868Model\uff1aOrdersModel\r\n *\u56fd\u5bb6\u8868Model\uff1aCountrysModel\r\n *\u9996\u5148\u8981\u5efa\u7acb\u8868\u4e0e\u8868\u4e4b\u95f4\u7684\u5173\u7cfb \r\n *\u5728CustomerModel\u4e2d\u6dfb\u52a0\u4e0e\u8ba2\u5355\u7684\u5173\u7cfb\r\n *\/     \r\nClass CustomerModel extends \\yii\\db\\ActiveRecord\r\n{\r\n    ...\r\n    \/\/\u5ba2\u6237\u548c\u8ba2\u5355\u662f\u4e00\u5bf9\u591a\u7684\u5173\u7cfb\u6240\u4ee5\u7528hasMany\r\n    \/\/\u6b64\u5904OrdersModel\u5728CustomerModel\u9876\u90e8\u522b\u5fd8\u4e86\u52a0\u5bf9\u5e94\u7684\u547d\u540d\u7a7a\u95f4\r\n    \/\/id\u5bf9\u5e94\u7684\u662fOrdersModel\u7684id\u5b57\u6bb5\uff0corder_id\u5bf9\u5e94CustomerModel\u7684order_id\u5b57\u6bb5\r\n    public function getOrders()\r\n    {\r\n        return $this-&gt;hasMany(OrdersModel::className(), ['id'=&gt;'order_id']);\r\n    }\r\n     \r\n    \/\/\u5ba2\u6237\u548c\u56fd\u5bb6\u662f\u4e00\u5bf9\u4e00\u7684\u5173\u7cfb\u6240\u4ee5\u7528hasOne\r\n    public function getCountry()\r\n    {\r\n        return $this-&gt;hasOne(CountrysModel::className(), ['id'=&gt;'Country_id']);\r\n    }\r\n    ....\r\n}\r\n       \r\n\/\/ \u67e5\u8be2\u5ba2\u6237\u4e0e\u4ed6\u4eec\u7684\u8ba2\u5355\u548c\u56fd\u5bb6\r\nCustomerModel::find()-&gt;with('orders', 'country')-&gt;all();\r\n\r\n\/\/ \u67e5\u8be2\u5ba2\u6237\u4e0e\u4ed6\u4eec\u7684\u8ba2\u5355\u548c\u8ba2\u5355\u7684\u53d1\u8d27\u5730\u5740\uff08\u6ce8\uff1aorders \u4e0e address\u90fd\u662f\u5173\u8054\u5173\u7cfb\uff09\r\nCustomerModel::find()-&gt;with('orders.address')-&gt;all();\r\n\r\n\/\/ \u67e5\u8be2\u5ba2\u6237\u4e0e\u4ed6\u4eec\u7684\u56fd\u5bb6\u548c\u72b6\u6001\u4e3a1\u7684\u8ba2\u5355\r\nCustomerModel::find()-&gt;with([\r\n    'orders' =&gt; function ($query) {\r\n        $query-&gt;andWhere('status = 1');\r\n        },\r\n        'country',\r\n])-&gt;all();<\/code><\/pre>\n<p style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"><span style=\"box-sizing: border-box; font-size: 24px;\">\u5176\u4ed6\u67e5\u8be2\u65b9\u6cd5<\/span><\/p>\n<pre class=\"language-php\"><code>\/\/\u67e5\u8be2\u4e00\u6761\r\n\\Yii::$app-&gt;db-&gt;createCommand('SELECT * FROM test')-&gt;queryOne();\r\n\r\n\/\/\u67e5\u8be2\u591a\u6761\r\n\\Yii::$app-&gt;db-&gt;createCommand('SELECT * FROM test')-&gt;queryAll();\r\n\r\n\/\/\u7ed1\u5b9a\u5355\u4e2a\u9632SQL\u6ce8\u5165\u53c2\u6570\r\n\\Yii::$app-&gt;db-&gt;createCommand('SELECT * FROM test WHERE id=:id')-&gt;bindValue(':id',5)-&gt;queryOne();\r\n\r\n\/\/\u7ed1\u5b9a\u591a\u4e2a\u9632SQL\u6ce8\u5165\u53c2\u6570\r\n\\Yii::$app-&gt;db-&gt;createCommand('SELECT * FROM test WHERE id=:id AND name=:name')-&gt;bindValues([':id'=&gt;3,':name'=&gt;'Tom'])-&gt;queryOne();\r\n\r\n\/\/\u7edf\u8ba1\u67e5\u8be2\r\n\\Yii::$app-&gt;db-&gt;createCommand('SELECT COUNT(\"id\") FROM test')-&gt;queryScalar();\r\n\r\n\r\n\/\/\u67e5\u8be2\u4e00\u6761\r\n$row = (new \\yii\\db\\Query())\r\n    -&gt;select('*')\r\n    -&gt;from('test')\r\n    -&gt;where('id=:id', [':id'=&gt;6])\r\n    -&gt;one();\r\n\r\n\/\/\u67e5\u8be2\u591a\u6761\r\n$rows = (new \\yii\\db\\Query())\r\n    -&gt;select('id,name')\r\n    -&gt;from('test')\r\n    -&gt;where(['&gt;','id', 2])\r\n    -&gt;andWhere('class=:class', [':class'=&gt;'A'])\r\n    -&gt;all();\r\n\r\n\/\/\u7edf\u8ba1\u67e5\u8be2\r\n$count = (new \\yii\\db\\Query())\r\n    -&gt;select('count(id)')\r\n    -&gt;from('test')\r\n    -&gt;where('class=:class', [':class'=&gt;'B'])\r\n    -&gt;count();\r\n\r\n\/\/\u5173\u8054\u67e5\u8be2\r\n$join = (new \\yii\\db\\Query())\r\n    -&gt;from('student s')\r\n    -&gt;select('s.*,t.id t_id,t.name t_name')\r\n    -&gt;leftJoin('teacher t','s.class = t.class')\r\n    -&gt;where('t.id=:t_id', [':t_id' =&gt; '2'])\r\n    -&gt;offset(3)\r\n    -&gt;limit(2)\r\n    -&gt;all();\r\n     \r\n\/\/\u67e5\u8be2\u4e00\u6761\r\n$row = Test::find()-&gt;where('id=:id',[':id'=&gt;5])-&gt;asArray()-&gt;one();\r\n\r\n\/\/\u67e5\u8be2\u591a\u6761\r\n$rows = Test::find()-&gt;where('id&gt;:id and class=:class',[':id'=&gt;12,':class'=&gt;'C'])-&gt;asArray()-&gt;all();\r\n\r\n\/\/\u7edf\u8ba1\u67e5\u8be2\r\n$count = Test::find()-&gt;count();<\/code><\/pre>\n<p style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"><span style=\"box-sizing: border-box; font-size: 24px;\">\u589e\u52a0\u6570\u636e<\/span><\/p>\n<pre class=\"language-php\"><code>\/\/\u63d2\u5165\u6570\u636e\r\n\\Yii::$app-&gt;db-&gt;createCommand()-&gt;insert('test',['name'=&gt;'James','age'=&gt;'22'])-&gt;execute();\r\n\r\n\/\/\u4e00\u6b21\u63d2\u5165\u591a\u884c\r\n\\Yii::$app-&gt;db-&gt;createCommand()-&gt;batchInsert('test',['name','age'],[\r\n        ['Hong','33'],\r\n        ['Wei','44']\r\n    ])-&gt;execute();\r\n\r\n\/\/\u5bf9\u8c61\u65b9\u5f0f---\u63d2\u5165\u6570\u636e\r\n$add = new Test();\r\n$add-&gt;name = 'Xing';\r\n$add-&gt;class = 'B';\r\n$add-&gt;save();<\/code><\/pre>\n<p style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"><span style=\"box-sizing: border-box; font-size: 24px;\">\u4fee\u6539\u6570\u636e<\/span><\/p>\n<pre class=\"language-php\"><code>\\Yii::$app-&gt;db-&gt;createCommand()-&gt;update('test',['name'=&gt;'Li'],'id=:id and class=:class',[':id'=&gt;1,':class'=&gt;'E'])-&gt;execute();\r\n\r\n\/\/save()\u8fdb\u884c\u4fee\u6539\r\n$update = Test::find()-&gt;where('id=:id',[':id'=&gt;6])-&gt;one();\r\n$update-&gt;score = 100;\/\/\u4fee\u6539\u5c5e\u6027\u503c\r\n$update-&gt;save();\r\n\r\n\/\/\u65b9\u6cd5updateAll()\r\n$updateAll = Test::updateAll(['name'=&gt;'Ping'],'id=:id',[':id'=&gt;10]);\r\n$updateAll = Test::updateAll(['is_del'=&gt;1],['in','id',['101','102','103']]);\r\n\r\n\/\/\u5bf9\u8c61\u65b9\u5f0f---\u4fee\u6539\r\n$update = Test::findOne(['id'=&gt;1]);\r\n$update-&gt;is_del = 1;\r\n$update-&gt;num += 1;  \/\/\u81ea\u589e1\r\n$update-&gt;save();<\/code><\/pre>\n<p style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"><span style=\"box-sizing: border-box; font-size: 24px;\">\u5220\u9664\u6570\u636e<\/span><\/p>\n<pre class=\"language-php\"><code>\\Yii::$app-&gt;db-&gt;createCommand()-&gt;delete('test','id&gt;:id',[':id'=&gt;6])-&gt;execute();\r\n\r\n\/\/\u5148\u67e5\u540e\u5220\r\n$del = Test::find()-&gt;where('id=:id',[':id'=&gt;6])-&gt;one();$del-&gt;delete();\r\n\/\/\u76f4\u63a5\u5220\u9664\r\nTest::deleteAll('id&gt;:id', [':id' =&gt; 29]);<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u57fa\u7840\u67e5\u8be2 User::find()-&gt;all(); \u6b64\u65b9\u6cd5\u8fd4\u56de\u6240\u6709\u6570\u636e\uff1b User::findOne($ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[15],"tags":[46],"class_list":["post-257","post","type-post","status-publish","format-standard","hentry","category-yii","tag-yii2"],"_links":{"self":[{"href":"https:\/\/www.djlog.cn\/index.php?rest_route=\/wp\/v2\/posts\/257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.djlog.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.djlog.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.djlog.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.djlog.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=257"}],"version-history":[{"count":0,"href":"https:\/\/www.djlog.cn\/index.php?rest_route=\/wp\/v2\/posts\/257\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.djlog.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.djlog.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.djlog.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}