在學習了yii框架的資料關聯後,對於多表關聯一直不是太理解,查閱了一些資料後,大致明白了一些,下面就大概寫下理解的內容。
一、先建幾張測試表
student ( studetnid, name )
course ( courseid , name )
course_student ( coursestudentid, courseid , studentid )
student 和 course 為兩張基表,即學生表與課表,乙個學生可以選多個課程,一門課程也可以被多個學生選擇,兩者是多對多關係,所以需要一張連線表: course_student表,為了區分id號, 我將基表的id都設為大寫id,連線表course_student內的學生id和課程id都設( i 大寫,d 小寫 )。
二、在model中寫連線關係(以student為例)
1.寫法一(一條語句搞定)
public function getcourses()
說明:因為是要獲取課程course,所以將course作為從表,第乙個courseid是course表中的,第二個courseid就是course_student中的,進行乙個對應。viatable()中就填入連線表的表名,然後再加入與student表的對應關係,第乙個studentid是course_student中的,第二個是student中的。
在studentcontroller中可以進行測試一下,看是否有用
public function actiontest()
2.寫法二(分兩步)
public function getcoursestudents()
說明:這裡是先建立student與course_student 表的連線關係。
public function getcourse()
說明:在上乙個基礎上繼而建立與course表的連線關係,via()中填入的是連線關係(就是上面建立的方法:getcoursestudent())
總結:主要就是通過viatable()和via()來進行多表連線,不過要注意兩者區別,viatable()中跟的是連線表的表名,via()中跟的是自定義的連線關係(就是自己寫的方法)。
可能會搞混的地方就是對應id的填寫順序,我這裡對每張表的id進行了區分,讀者注意看就行。
YII相關學習資料整合
yii2的框架,因為國內關於yii2框架的具體中文資料還是比較少,下面整理一些比較好的中文資料。1 yii2的底層和架構方面 a yii2的目前的官方中文社群文件,翻譯還算是比較明白,最好從這裡入手 b yii2的關於底層方面的解說,說的比較通俗易解 c 牛人從底層分析說解yii2,設計的整個設計都...
yii框架學習(一)yii框架介紹
yii幾乎擁有了當今web2.0應用發展的全部特性。下面是這些特性的乙個簡短的清單。yii是乙個基於元件 用於開發大型web應用的高效能php框架。在web開發中yii可以最大限度的實現 重用,極大的提高開發的速度。名字yii 讀音是yee or ji 應該就是 易 的讀音 代表的是容易 easy ...
yii框架學習(六)yii框架相應處理
yii框架使用response類來修改statuscode,如下 res statuscode 404 複製 使用header類下的add方法既可以,如下是新增禁止瀏覽器快取配置資訊。res headers add pragma no cache 複製 使用set方法來修改 res headers ...