ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
如果想限制别人api访问目录入口可以在同级目录下.htaccess下设置。 model类完成数据操作。 User::find()->with('profile')->all();  关联查询,对应model下get方法 hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来的结果会保留Yii2自有的表头排序功能,以及CheckboxColumn中input的id存值,至于还有没有其它的好处就需要大家去挖掘了,笔者目前就发现了这两个常用的好处。其他的关联查询,像yiidbQuery查询或者原生的SQL语句查询都没有,查询出来在列表展示的时候,表头一排黑。 **mian.php这个文件很重要,里面有许多配置都很平常操作有关。** 'rules' => [ [ 'class' => 'yii\rest\UrlRule', 'controller' => 'admin/book', 'extraPatterns' => [ "GET index"=> "index", "POST create"=>"create", ], 'except' => [], ] ], 写api接口每次都必须把相关控制类和方法写上。比如上面写了extraPatterns表示由下面接口访问。api.demo.com/admin/books/index 访问的是admin目录下book控制器,index操作方法。 //self::调用当前类自己内部的静态方法时的用法 使用了 [[yii\db\ActiveRecord::hasMany()]] 和 [[yii\db\ActiveRecord::hasOne()]] 方法。 以 上两例分别是关联数据多对一关系和一对一关系的建模范例。 如,一个客户有很多订单,一个订单只归 属一个客户。 两个方法都有两个参数并返回 [[yii\db\ActiveQuery]] 对象。 /** 表达式 Yii::$app 代表应用实例,它是一个全局可访问的单例。同时 它也是一个服务定位器,能提供 request,response,db 等等特定功能的 组件。在上面的代码里就是使用 request组件来访问应用实例收到的 $_PO ST 数据。 */ 模型类中 rules()方法表示核心验证器,yii模型类自带验证方法。 [[yii\base\Model::validate()|validate()]] 方法触发数据验证。如果有数据验证失败,将把 [[yii\base\Model::hasErrors|hasErrors]] 属性设为 ture,想要知道具体发生什么错误就调用 [[yii\base\Model::getErrors|getErrors]]。*/ //关闭保存校验校验数据 $model->save(false); /**该方法将正确转义列名,并引用要插入的值,请注意,每行中的必须 与相应的列名匹配。还要注意,在调用execute()之前,不会执行创建的 命令。 */ Yii::$app->db->createCommand()->batchInsert('books_image', ['url', 'book_id'],$images)->execute(); } //使用给定的配置创建新对象. return Yii::createObject(SuccessData::class, [$id]); } //ActiveDataProvider 通过使用 $query 执行数据库查询来提供数据. /** Pagination 表示与数据项的分页有关的信息. 当数据需要在多个页面中呈现时, 分页可用于来表示诸如 总项目数, 每页项目数, 当前页码 等信息. 这些信息可以传递给 pagers 来渲染分页按钮或链接. 以下示例显示如何创建分页对象并将其提供给分页条. */ 'pagination' => new Pagination(['pageSize' =>20]) ]); 关于yii框架的跨域问题: 在入口文件同级目录下.htaccesss文件添加 Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php RewriteRule \.svn\/ /404.html RewriteRule \.git\/ /404.html SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 <IfModule mod_rewrite.c> Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Headers: "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding,token" Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS" RewriteEngine On RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php </IfModule> 或者在vhosts.conf文件下添加 Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Headers: "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding,token" Header always set Access-Control-Allow-Methods "POST, GET, 上面这几句 https://www.cnblogs.com/eric-qin/p/11434345.html这里有说到如何解决跨域问题。