如果想限制別人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這里有說到如何解決跨域問題。