如果想限制别人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这里有说到如何解决跨域问题。