Php Laravel框架 多表關系處理 之 Eloquent一對多關系處理

Php Laravel框架 多表關系處理 之 Eloquent一對多關系處理

? ? ? ? 本博文主要介紹 Laravel 框架中 Eloquent ?對一對多關系的處理以及在?Laravel Administrator(后臺擴展包)中的應用。

? ? ? ? 您的數據庫可能是彼此相關的。比方,一篇博客文章可能有很多評論,或者一個訂單與下訂單的用戶相關。Eloquent 使得管理和處理這些關系變得簡單。Laravel 提供了四種類型的關系: -一對一 -一對多 -多對多 - 多態關系

? ? ? 一對多

一個一對多關系的樣例是一篇博客文章有很多評論或者一個課程有的多次分數信息等。

我們能夠像這樣定義關系模型 Model:

<?php
/*** sobjectinfo:課程信息表 Model* soc_id     :主鍵自增* soc_name   :課程名* soc_teacher:授課老師**/
class SobjectInfo extends Eloquent {//自己定義表名(protected $table)protected $table = 'sobjectinfo';//自己定義主鍵(protected $primaryKey)protected $primaryKey = 'soc_id';//關閉 創建時間 與 更新時間 的自己主動維護(protected $timestamps)public $timestamps = false;/** 定義一對多關系*/public function Scoreinfo(){return $this -> hasMany('Scoreinfo','soc_id');}
}?>

定義與之相應的逆向關系 Model:

<?php
/*** scoreinfo:分數信息表 Model* so_id   :主鍵自增* s_id    :學生信息表(stuinfo)主鍵* soc_id  :課程信息表(sobjectinfo)主鍵* score   :分數*/
class ScoreInfo extends Eloquent {//自己定義表名(protected $table)protected $table = 'scoreinfo';//自己定義主鍵(protected $primaryKey)protected $primaryKey = 'so_id';//關閉 創建時間 與 更新時間 的自己主動維護(protected $timestamps)public $timestamps = false;/** 分數表(ScoreInfo)與課程表(SobjectInfo)、學生信息表(StuInfo)有主外鍵關系* 而且是一對多的關系*/public function StuInfo(){return $this -> belongsTo('StuInfo','s_id');}/** 定義逆向關系指向主鍵表* */public function SobjectInfo(){return $this -> belongsTo('SobjectInfo','soc_id');}
} ?

>

通過以上步驟的處理。表與表之間的一對多關系已確立,

以下將介紹在Laravel Administrato 后臺中的實現 下拉列表查詢、綁定等應用

<?phpreturn array('title' => '分數信息',        //欄目名'single' => ' >>',            //新建描寫敘述'model' => 'ScoreInfo',       //分數信息'form_width' => 960,          //左邊欄目寬//列表'columns' => array('so_id' => array('title' => '編號','select' => "so_id",'sort_field'=>'so_id'),'s_name'=>array('title'=>'學生姓名','relationship' => 'StuInfo','select' => '(:table).s_name',),'soc_name'=>array('title'=>'課程名稱','relationship' => 'SobjectInfo','select' => '(:table).soc_name',),'score'=>array('title'=>'考試分數','select'=>'score'),),//篩選信息'filters' => array('so_id' => array('title'=>'編號'),'SobjectInfo'=>array('type'    => 'relationship','title'   => '課程名''name_field' => 'soc_name',),'StuInfo'=>array('type'  => 'relationship','title' => '學生姓名','name_field'  => 's_name',),'score'=>array('title'=>'考試分數','type' => 'number'),),//改動、新增'edit_fields' => array('StuInfo'=>array('type'  => 'relationship','title' => '學生姓名','name_field'  => 's_name',),'SobjectInfo'=>array('type'    => 'relationship','title'   => '課程名','name_field' => 'soc_name',),'score'=>array('title'=>'考試分數','type'=>'text'),));?>
以上演示樣例展示的是 后臺 分數信息 類。

演示樣例中多次使用到 “學生姓名”、“課程名”,盡管他們存儲在不同的表中,但因為我們之前在 Model中已建立了它們之間的 一對多關系,因此我們能夠自由搭配組合

效果圖例如以下:



10個Laravel4開發者必用擴展包:
http://blog.csdn.net/yimiyuangguang/article/details/39756115
Laravel Administrator 文檔

http://administrator.frozennode.com/docs/field-type-relationship

Laravel4 中文幫助手冊:

http://pan.baidu.com/s/1jGl6cqa

轉載于:https://www.cnblogs.com/yxwkf/p/5278068.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272206.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

進程間通信IPC(二)(共享內存、信號、信號量)

共享內存&#xff1a; 共享內存就是允許兩個或多個進程共享一定的存儲區。就如同 malloc() 函數向不同進程返回了指向同一個物理內存區域的指針。當一個進程改變了這塊地址中的內容的時候&#xff0c;其它進程都會察覺到這個更改。因為數據不需要在客戶機和服務器端之間復制&am…

分布式理論CAP定理

CAP原則又稱CAP定理&#xff0c;指的是在一個分布式系統中&#xff0c; Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分區容錯性&#xff09;&#xff0c;三者不可兼得。 998年&#xff0c;加州…

xmlWriter 以UTF-8格式寫xml問題

dom4j中的XMLWriter提供以下幾種構造方法&#xff1a; XMLWriter() XMLWriter(OutputFormat format) XMLWriter(OutputStream out) XMLWriter(OutputStream out, OutputFormat format) XMLWriter(Writer writer) XMLWriter(Writer writer, OutputFormat format) 最簡單常…

linux線程(互斥鎖、條件)

線程概念&#xff1a; 典型的UNIX/Linux進程可以看成只有一個控制線程&#xff1a;一個進程在同一時刻只做一件事情。有了多個控制線程后&#xff0c;在程序設計時可以把進程設計成在同一時刻做不止一件事&#xff0c;每個線程各自處理獨立的任務。 進程是程序執行時的一個實例…

centos下防火墻設置

1、開啟防火墻 systemctl start firewalld2、開放指定端口firewall-cmd --zonepublic --add-port8888/tcp --permanent命令含義&#xff1a; --zone #作用域 --add-port1935/tcp #添加端口&#xff0c;格式為&#xff1a;端口/通訊協議 --permanent #永久生效&#xff0c;沒有…

linux網絡編程、socket編程

進程間通信&#xff1a; 特點&#xff1a;依賴于內核&#xff0c;造成缺陷——無法實現多機通信。 網絡&#xff1a; 地址&#xff1a;由IP地址&#xff08;IP地址是IP協議提供的一種統一的地址格式&#xff0c;它為互聯網上的每一個網絡和每一臺主機分配一個邏輯地址&#xf…

【Python】Python Mako模板使用

參考資料&#xff1a; Mako Templates for Python官網&#xff1a;http://www.makotemplates.org/ Python模板庫Mako的用法&#xff1a;http://my.oschina.net/u/877170/blog/290438 Mako 1.0.4 Documentation&#xff1a;http://docs.makotemplates.org/en/latest/usage.html#…

簡單的ftp服務器(客戶端、服務器端、socket)

查看本機IP地址&#xff1a; 127.0.0.1 服務器功能&#xff1a; 可以獲取服務器文件使用get指令可以展示服務器有哪些文件使用ls指令進入服務器某個文件夾使用指令cd文件夾名稱上傳本地文件到服務器&#xff0c;使用指令putpwd可以查看客戶端在當前服務器的位置 客戶端本地…

JavaScript 全局對象

JavaScript 全局對象 全局屬性和函數可用于所有內建的 JavaScript 對象。 頂層函數&#xff08;全局函數&#xff09; 函數描述decodeURI()解碼某個編碼的 URI。decodeURIComponent()解碼一個編碼的 URI 組件。encodeURI()把字符串編碼為 URI。encodeURIComponent()把字符串編碼…

Redis持久化方式~RDB 持久化和AOF 持久化

持久化 Redis 是內存型數據庫&#xff0c;為了保證數據在斷電后不會丟失&#xff0c;需要將內存中的數據持久化到硬盤上。 RDB 持久化 將某個時間點的所有數據都存放到硬盤上。 可以將快照復制到其它服務器從而創建具有相同數據的服務器副本。 如果系統發生故障&#xff0…

Linux文件和目錄權限筆記

查看文件或者目錄的權限命令&#xff1a;ls -al # -a 表示全部文件包含隱藏文件&#xff0c;-l 表示列出每個文件的詳細信息比如執行 ls -altotal 115drwxr--x--- 4 root root 4096 Oct 24 02:07 install.log格式說明&#xff1a;通過 ls -al 格式化輸出的文件詳細信息&#x…

python基礎:序列(列表、元組、字符串)、函數、字典、集合

Python語言運行環境&#xff1a; windowslinuxunixMacos等等 博客記錄內容&#xff1a; Python3的所有語法、面向對象思維、運用模塊進行編程、游戲編程、計算機仿真。 Python是什么類型的語言&#xff1a; Python是腳本語言&#xff0c;腳本語言(Scripting language)是電腦…

Redis 與 Memcached的區別

Redis 與 Memcached 兩者都是非關系型內存鍵值數據庫&#xff0c;主要有以下不同&#xff1a; 數據類型 Memcached 僅支持字符串類型&#xff0c;而 Redis 支持五種不同的數據類型&#xff0c;可以更靈活地解決問題。 數據持久化 Redis 支持兩種持久化策略&#xff1a;RDB…

python基礎(文件、異常、模塊、類、對象)

文件&#xff1a; 打開文件使用open函數&#xff0c;open()的第一個參數是&#xff1a;要打開文件的路徑&#xff0c;如果只傳入文件名那么將在當前文件下查找文件并打開。第二個參數是&#xff1a;文件的打開模式&#xff0c;其他參數都是默認的。文件的打開模式如下圖所示&a…

redis 和 memcached 的區別

redis 和 memcached 的區別 對于 redis 和 memcached 我總結了下面四點。現在公司一般都是用 redis 來實現緩存&#xff0c;而且 redis 自身也越來越強大了&#xff01; redis支持更豐富的數據類型&#xff08;支持更復雜的應用場景&#xff09;&#xff1a;Redis不僅僅支持簡…

樹莓派入門(樹莓派登錄的幾種方式)

什么是嵌入式&#xff1f; 嵌入式即嵌入式系統&#xff0c;IEEE&#xff08;美國電氣和電子工程師協會&#xff09;對其定義是用于控制、監視或者輔助操作機器和設備的裝置&#xff0c;是一種專用的計算機系統。國內普遍認同的嵌入式系統定義是以應用為中心&#xff0c;以計算…

git 如何刪除本地創建的倉庫(轉載自 https://segmentfault.com/q/1010000002996177?_ea=262685)...

可以先清除本地文件夾下的git文件&#xff0c;然后在重新初始化新建的git倉庫 //刪除文件夾下的所有 .git 文件 find . -name ".git" | xargs rm -Rf接著add&#xff0c;commit等操作即可轉載于:https://www.cnblogs.com/xiahl/p/5289266.html

mysql中SQL查詢優化方法總結

1.對查詢進行優化&#xff0c;應盡量避免全表掃描&#xff0c;首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中對字段進行 null 值判斷&#xff0c;否則將導致引擎放棄使用索引而進行全表掃描&#xff0c;如&#xff1a;select id from t w…

Linux庫概念及相關編程(動態庫、靜態庫、環境變量)

分文件編程&#xff1a; 好處&#xff1a;分模塊編程思想&#xff0c;功能和責任劃分清楚便與調試&#xff0c;main函數簡潔&#xff0c;代碼易于閱讀。編程時頭文件有的是使用<>這個符號括起來的&#xff0c;有的是" "使用的是雙引號&#xff0c;使用尖括號括…