摘要:要是哪寫的不好也歡迎您多批評說明一下這個(gè)不是什么困難的問題但是網(wǎng)上給的答案都不太正確或者不太好用。自己寫了一個(gè)注釋版本可以方便大家的工作。請大家在下載后將和里面的文件分別放到的和下然后在數(shù)據(jù)庫里面執(zhí)行文件這是一個(gè)關(guān)于員工信息的表單。
您要是看著好啊就轉(zhuǎn)載, 寫上文章的出處就成。
要是哪寫的不好也歡迎您多批評
說明一下, 這個(gè)不是什么困難的問題, 但是網(wǎng)上給的答案都不太正確, 或者不太好用。
自己寫了一個(gè)demo注釋版本, 可以方便大家的工作。
請大家在下載后將models和controller里面的文件分別放到y(tǒng)ii的models和controller下, 然后在數(shù)據(jù)庫里面執(zhí)行sql.sql文件
| +----------------------------------------------------------------------+ */ class Staff extends CActiveRecord{ public static function model($className=__CLASS__){ return parent::model($className); } public function tableName(){ return "p3_staff"; // 主表的名稱 } public function rule(){ } /* relations方法 */ public function relations(){ return array( /* +----------------------------------------------------------------------+ | 解釋一下"type"=>array(self::BELONGS_TO, "Type", "type_id") | | 1. type: 可以起一個(gè)你想起的名字, 在下面多表連接的時(shí)候需要使用它 | | 2. self::BELONGS_TO 是連接方式 代表多對一 | | 3. Type: 是被連接的表所屬類的文件名稱 比如說/ | | 我想連接type表 那么我就要在model下新建一個(gè)xxx.php 里面的table指向/ | | 這張表 | | 4. type_id: 是主表的外鍵名稱 | +----------------------------------------------------------------------+ */ "type"=>array(self::BELONGS_TO, "Type", "type_id"), // 如果想要連接更多的表, 就按照上面type這條數(shù)據(jù)仿寫就可以了 例如 "depart"=>array(self::BELONGS_TO, "Depart", "depart_id"), ); } /** * [getList 進(jìn)行多表連接并獲取數(shù)據(jù)] * @return [array] [返回多表連接后的數(shù)據(jù)] */ public function getList(){ $criteria = new CDbCriteria; $criteria->alias = "t"; $criteria->with = array("type", "depart"); // array里面填寫relations返回的數(shù)組的鍵值, 并用,隔開 $result = Staff::model()->with("type","depart")->findAll($criteria); $pageInfo = []; foreach ($result as $key=>$value) { $pageInfo[$key]["id"] = $value["id"]; $pageInfo[$key]["name"] = $value["name"]; $pageInfo[$key]["type_id"] = $value["type_id"]; $pageInfo[$key]["depart_id"] = $value["depart_id"]; $pageInfo[$key]["type_title"] = $value->type->title; // 注意 副表要這么寫才行 $pageInfo[$key]["depart_title"] = $value->depart->title; } return $pageInfo; } }在controller里面調(diào)用
···
$result = Staff::model()->getList(); echo ""; print_r($result);···
我們就可以看到輸出的信息了
Array ( [0] => Array ( [id] => 1 [name] => 二他媽媽 [type_id] => 1 [depart_id] => 2 [type_title] => 不明真相的吃瓜群眾-類型一 [depart_title] => 部門2 ) ......demo下載地址 密碼: h852
鏈接描述
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30417.html
摘要:今天把這個(gè)問題講明白了,看看是怎么個(gè)多表關(guān)聯(lián)以及如何去優(yōu)化這個(gè)關(guān)聯(lián)。現(xiàn)需要在列表展示表的來源渠道,且該渠道可搜索。關(guān)聯(lián)表字段增加查詢中的搜索模型也是通過實(shí)現(xiàn)的,該模型通過控制著哪個(gè)字段可搜索,哪個(gè)字段不可搜索。 作者:白狼 出處:http://www.manks.top/yii2_many_ar_relation_search.html 本文版權(quán)歸作者,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留...
摘要:在里面對數(shù)據(jù)庫操作有一個(gè)很方便的功能就是多表關(guān)聯(lián),通過在里面指定對某個(gè)表的關(guān)聯(lián),這樣就可以很快得到相關(guān)信息而不需要自己去寫復(fù)雜的語句。 在 Yii 里面對數(shù)據(jù)庫操作有一個(gè)很方便的功能就是多表關(guān)聯(lián),通過在 model 里面指定對某個(gè)表的關(guān)聯(lián),這樣就可以很快得到相關(guān)信息而不需要自己去寫復(fù)雜的 sql 語句。 下面我們拿 user 表和 news 表舉例。(一個(gè)用戶發(fā)表了多篇文章) 首先,...
摘要:第二個(gè)參數(shù)是一個(gè)數(shù)組,其中鍵為所關(guān)聯(lián)的模型中的屬性,值為當(dāng)前模型中的屬性。這里注意中的第二個(gè)是指關(guān)聯(lián)的中的,第一個(gè)是指中的。 首先先來說明一下表結(jié)構(gòu) 表結(jié)構(gòu) 現(xiàn)在有訂單表、用戶表、商品清單表、商品庫存表 showImg(https://segmentfault.com/img/bVRcME?w=833&h=244); showImg(https://segmentfault.com/i...
摘要:前言是特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時(shí)在使用多表關(guān)聯(lián)查詢的時(shí)候建議使用它們。需求分析使用一條查詢語句就能把列表的數(shù)據(jù)全部展現(xiàn)出來,列表包含一對一,一對多,以及多對多的關(guān)系。不能破壞自有的表頭排序功能,以及中的存值。相關(guān)資料中多表關(guān)聯(lián)查詢 前言 hasOne、hasMany是Yii2特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時(shí)在使用多表關(guān)聯(lián)查詢的時(shí)候建議使用它們。為什么?因?yàn)檫@種方式關(guān)聯(lián)查詢出來...
閱讀 1127·2021-10-09 09:43
閱讀 18610·2021-09-22 15:52
閱讀 1071·2019-08-30 15:44
閱讀 3064·2019-08-30 15:44
閱讀 3253·2019-08-26 14:07
閱讀 914·2019-08-26 13:55
閱讀 2576·2019-08-26 13:41
閱讀 3095·2019-08-26 13:29