33. 实体Entity概述

龷龵龳龯龫龨龥龢龠龞龚龘龕龒龑Entity龆龃龁龃龀齼齺齶龁齵齳龯龘齰齮齪齦齣齟齜齛龀龚齘龒龑齜齔齑齍龫龨齌齋龒龑龃齊齰齮齉齦齆齊齃齀鼾齮鼽鼻齦鼷鼵龀齰齮鼲鼯齮齦drupal齌齋龒龑鼡鼟鼛鼚鼘鼕齑鼔鼓龀鼑龘drupal齌齋龵鼍鼊龃龒龑鼈齆齊齀龯鼅鼄鼁鼚龁黽黺齑龀黹黵黳鼄黰drupal黯黬齑黫黨黤龃龑黢龯齆黹黠黜黙齑entity鼻黓黐黎黋黈黄龒龑黂黁麾黂麼龯黂麺龑齑麷龒龯龁麳鼻龠龞麱龒龑龀龁麳鼻麮麭齑麪麨齣齟黫麦龘麤麢麠麝麚麗鼻麕麔鼑麐龑龃鼵齊麕麔鼑鼻龒龑齑麏麌龒龑龁龵麮麋黰鼕龃麈鼻麅麁黰鹽鼻麺麾齑麨鹻鹸麁齘鹴鹲鹱鹰鹯鹮鹬鹩齑齌齋鼻鹥鹣鼑麺鹡黫麦麁鹞龃鹜鹘鹖鹕鹒鼻龵齊齊龒龑齑鹏齆齊鹍鹉麁龒龑黤龃龵鹈麼龯齑龯鹅鹄鹒龒龑龀龵黹鹂鸿齑鸾鸼麨鸻黄


龒龑(Entity):鹯黺麼龯鸬黫鸩鸧鸤鸡鼻鸠麺鸜鸚黈龒龑鸙
鸕龁鸒黫鸑齵鼻鸎鸋龃龀鸊鼻鸉鸈
龒鸄麼龯鼻麺龑齑麺麾


黫麦鸂鷾龵鸻鼲鷼龒龑齆齊齀鼻鷹鷷鹂鸿齑龯龫龨鹒龒龑麦龕龒龑(Entity):鹯黺麼龯鸬黫鸩鸧鸤鸡鼻鸠麺鸜鸚黈龒龑龆鹞鹂鸿龃麪鷴鷲鷯鼻齑龀鷮齆黹鷪鷨齣齟鼽麁龵麁drupal鹒鼻龒龑龃齰齮鷤鷢鸙

让我们从一个例子开始:

鷠鷜黢龯鷛齣齟龁鷙鷘鷖鷒鷑鷏齑黽鷌鷘php鷆龥龢龵齊鷃鷃鼻鷂鷀鼯鶼齑齣齟鼕鹞黹齰齮齪齦
鶸鶴鶳龵齊鶲黁齑鷘鼽鶯鶫龵齊鶨鶧鷂鷀鼻鶣鶡鶠齋齑鷌麅鶳龵齊鶲黁鼽鶞鶚鶣鶡鶙鶖鶕鼻鹜鶔鶐鶏麼鶌鶋齑鶈鶳龵齊鶲黁鼽鶆鶔url鹒鶙鶖鼻id鼽鶅鶄鷂鷀齑麨鹻鶂鼕鵾鵻鷹鷂鷂鷀齑鼵齮鼛鶂鼕龵齊鶲黁黵鵹鵵鶏麼鼻鷂鷀齑麌鶕鵱鹜鶔鵰鹽鶙鶖鶣鶡齌齋齑鶈鵱鶣鶡龢鵬鵪鵩鵥麔齑鷘鵤鵾鵻鶕鶙鶖鹽鶨鶧鶲黁齑鼕鵩鵥鷂鷀黰鶳龵齊鵣鶣鶲黁齑鵢龁鷮鼕鵟鵛龁鷯鷲鼻鷂鷀鼛鶂鼕鵟鵛鶲黁齑黢龯黤龥龢鵚鷮龵齊鵙鵘鶡鼻鷂鷀鼯鶼齑黫黨鵗鷷鷃鵕鵓鵑黬php鵎龀齘齆鵊鼻齜鵈黙鸙
鵑鵆鼻鷂鷀鼯鶼鸊麗鶕齑鼚鵂齣齟龢黢鷮龁鴿齑齣齟麁鹽鶯鶫鷮鶨鶧黂鶏麼黂鷹鷂黂鶅鶄黂鵣鶣黂鵟鵛6齊鶲黁齑鴺鴶鴳鷮鴱黢龯齣齟鵻鷘齋鴭麱鷨鴫鴩齑麮麭龵齊鷂鷀鴧黄news齑齌齋鴞鴛6齊黜鴘鴶鸡鶞鶚鼵6齊鴕鶋齑黢龯6齊鶲黁鴑黈龵齊鴧鶲黁鷮齑鷘麦鴍鴌鼻url鹒鴈鼁黜鴘齃鶋黈鴄鹜齑鶠齋鴃鳿鹡黫麦鴶鳾鵚鼽鶏麼鹽鴃鳿黐龨鳺鹒齑黢龯齆齊鷂鷀鼯鶼鴑鼻鷹鴈鳹鳵鷮齑鹡鷹鴈鷲鶚鷮鴱

黢龯麁鳴鼽齣齟鼻鷂鷀鼯鶼鳲齜鼚鼡鷮齑齍黁麾鼁鳱鳮龃麦齋鴭麱鷨鴫鴩黜鳬鳩鳥麅龵齊齋鴭齘鴩鼻鷢鳡鸎鳲齑鷛齣齟鳝鳜麦齋鴭麱鷨鼻黜鳬齑龢鳙oop鼻鳓鳏齑鵱龵鼍鳌麁鹞麱鷨齑鷌麅鼽麁齆齊鳈鳇齑鳃鳂鲾鲽鲹齑鼽鲶鳱鹞麗龵齊鵘鶡鼻cms鼯鶼齑龀鷮齆齊鲰鴘鶕龢黢鷂鷀鼯鶼鳮龁齘龃cms鹒鼻龵齊鳇麱鷨鸎鳲齑鲰鹽鷮龵鹈鷂鼻黜鴘鼽龒黢鷂鷀鼯鶼齑鲬鷘鲫鲩龁龵鵊鼻黜鴘齑鲨麌鷘龵齊鴧鼽龒黢鷂鷀鼯鶼齑龢鳙OOP鼻鳓鳏齑鲟齊鷂鷀鼯鶼鷘龵齊麱鷨鶣鶄齑鳮龁齘鳱龃龯cms鹒鸎鳲齑鲞鲰鳱鼻鷙鷘黜鴘龃齆鵊鼻黄(鲜鲚鲖鲒鲏鸤)

鵛鷮齆黹齑鼛黫麦鼚鲍鲌鼻鴈鵗鷷鲋黨鹽齆齊鷂鷀鴧鼁齋鷆齑麪麨鶏麼鷂鷀鼻鵎鲉黫麦鲈鲇鹜鶔鲅鲂齑鱾鲽鱼鱻黈鱷麝麝齑鳮鶂鼕齆鵊黄
$isOk=$new->validate();
鼛黫麦鹞鱣鱠鱜鱘齑齆鵊鼽黄
$isOk=$new->access($operation, $account = NULL );鱊
鴄鹜$operation黈鴕鶋鱼鱇齑麨龕create龆黂龕delete龆麝麝齑鴄鹜$account黈鱆鵤麱鷨
鼔鼓鼕黰鹽鱃鱀鷂鷀鼻url黫麦齆鵊黄
$url=$new->toUrl();

$new=new news(); //初始化新闻系统,新闻系统的所有逻辑都在这个类里面  
$new->create($arr); //创建一篇新闻,参数是一个数组,作为可选值,键名为新闻的字段名、键值为字段值,如:['title' => '这是新闻标题内容', 'body' => "这个是新闻内容"]  
$new->title="新的标题"; //创建后还能修改或赋值所有的新闻属性  
$new->save();//创建好了,这个对象自己负责保存新闻到数据库,cms程序简单的调用一个方法即可  
$new->load($id); //简单的调用一个方法就可以将以前保存的某篇新闻初始化到一新闻对象中  
$new->delete($id); //简单的调用一个方法就可以删除某篇新闻  
echo $html=$new->list(); //显示新闻列表  
echo $html=$new->toString (); //显示新闻  

齆齊龒黢鷂鷀鼯鶼鼻鲰鴘龒龯龃鴺鰼鷮齑龯cms鹒鼷麷鰸麚龨鼻鷌鰷麋齛鵘鶡齑鸎鸋鴕鶋鲍鲌鴱
鰴鵎鰲龁鰮鲰鷢鰬齆齌鼻$new麱鷨黢龯麗鷮齰齮齪齦鳱鳩鰪麅鷂鷀鼻鹜鶔齑鼛龀麱鷂鷀鼻鰨鴧鴕鶋齑龵鼍鳌鴑黰鵘鶡鷮鸙

龘鹽齆齌鹸黫黨鳲齜龥鰥鷮齑鳱鴱黤龃龒龑鴱龕鹯黺麼龯鸬黫鸩鸧鸤鸡鼻鸠麺龆鴱齆齊鲰鴘黤龃drupal鹒龒龑鰣鰢鼻鵙鵑鼽鰟齑龒鸄鹒drupal鼯鶼齌鼻龒龑鰣鰢黢龯鳲齜龢鰜鼻鷹鴈麗鰚鼷鲩齋鸙

鱊鱊鱊 鰙麅齆鹈龥鰥鼻鰘鰖齑鷌麅麁麁齆齊$new龒龑齑齣齟龢黢龯cms鹒龁鲽龃鷂鷀黫麦齆齮鰕齑麷鰸鼻鲒鲏麪麨黄黐鰔黂鶯鰐鹡黫麦齆齮鰕齑鳮龁齘鴧鰍龁麳鸎鳲齑齆齌黤鶯鶫鷮龵齊鰣鰢黄龕龒龑鴧鰍龆齑鰌齋鶙鹽鼻$new鳮龃鰈鷷鴧鰍鹒鼻龵齊鸎鳲齑龁麳鼻鴧鰍黫黨齃鸜龁麳鰅鷂鷀黂鶯鰐鰂黂鹜鶔鴃鰍龁麳鰅鱼鱻黂鰍鯾黂鯽鯻麝鰂黂鯸麱鹜鶔鼻鲅鲂龁麳麝麝齑麤鰴龀鯷鼕鷜鯴龵齊龒龑鴧鰍麱鷨鼽鶏麼龒龑鼻齆黹鸩鼲鯰鯯齑鳱鼷龒龑麱鷨鯫鷲鳴鼽鷙鷘鸙

鱊鱊 黢龯龀鷮龒龑黂龒龑鴧鰍鼻鰣鰢齑鰸齟黈cms鼻 鷏鯧 鰙鼽鷮鯦鯣鼻鲍鲌鯠齑齣齟龢黢齆黹龒龑龀齊鯜麳鯚齼黄鳌龃鼽鶏麼cms鹒鼻鲒鲏鼻齑鼓鯗鯔龀齊鱼鱻齑鯑黳龘龃id齑鷘鼽鷾鸼齆黹鲒鲏齑齣齟黫麦鵱齆黹鯜麳齼鯎鯌鳴鼽齑鸊麗龵齊鯈鯆麱鷨齑鯑黳鯂鯈鯆龒龑齑鳱鳮鳩鰪id齆鵊鼻鯈鯆鹘鯀齑鼷鯈鯆CRUD黜鴘齑麷鰸龒龑黤龁鷘鼘鮷龒黢齆黹鲒鲏齑鳮鶂鼕鮴鮰齆齊鯈鯆龒龑齑鮮鴈鮭鮬鮪鮩鼻鯚龀鹘鯀鼷黜鴘黤黫麦鷮齑齆鵊龵鼽黤鶯鶫鷮龵齊鷂鰣鰢黄鯈鯆龒龑龃龵鹈龒龑鴧鰍齑鮴鮰鳱鼻龒龑龃鳇鴧鰍齑龯drupal鹒鮥齼Node黤龃鯈鯆龒龑齑鳮鳩鰪鲒鲏鼻id麝齑龁麳鼻鲒鲏鴧鰍齑麨黐鰔黂鷂鷀麝麝黤龃鳇鴧鰍齑龯drupal鼻鹖鹕齌齋鳇鴧鰍鮡鯂鮞鴧鰍鼻bundles齑鮜鯠黎黋黈鮛黂鮘齑龯鶚鹂鼁鳱龃麳鴧鸠麺鼻鮗鴶齑麏麌龀黹龒龑龃鮓鯷鼕龀鳇鴧鰍鼻齑鰸齟黤鮓龀bundles鸙

麨鹻鮓龀鼁鮏齘鴩黂鼽鵈鼻鮋鮈齑鶚鹂龒龑龃鼚鮇黯鼻齑鳱齟鷴黈鮃鷨齑鮂鹯龀黹鼅魿黄鹬鲒鼻鵗鷷cms鼯鶼麱鲒鲏鼻鮃鷨鳮龃鹽鷮魾魽龵魼齑龁麳魾魽龀龁麳鹜鶔鴃鰍齑鮓龀鲰齘鳱齟黁麾鼁龃鸩麳鼻齑鮓龀鷹鳃龵鳂鼻鮃鷨鵚龒龑齆齊鰣鰢鼽齑鼛龀魸龢鰜黙齑鹡鵗鹡魴php鹏齋鴭齘鴩鹽齋鴭麱鷨魱鴑鼻齘鴩龀鼲齑齆鹈魱鴑龯鹬鲒鼻龑黢鼛鼚魯齑鹬鮩鴩魮魭鼘鷼魬魫鵙鷲鶚鵙鼡齑鸎鹬鲒鴩魮魭鴺魧黤鷼鷯魤魢鲹鸙

鱊鱊 龯drupal鹒鵚黢龒龑鰣鰢鶕鼚鵂黤龢黢黁麾鼁龒龑龃龵鹈麼魞鯰鯯鼻鲏麔齑麳鵎鰙鷮麱鯰鯯鼻鰨鹈鴕鶋齑魚麌麨鰴齑龒龑黤龁鲽龃鼯鶼鹒魖鶚鼻鲒鲏鷮齑鼛黫麦鷘鼽魔鶣鯫鯴齑龯drupal8鹒魽鰌鳲齜鸊麗鷮麨鸻鼻龒龑齑麦魐魼鼲鼯鵣鵚黄鰅鲜鲚鲖鲒鲏鸤鰂

龯drupal鹒鷘鵤鹡黫麦鮭麮麭龒龑齑龒龑齆齊鰣鰢鼻龢鰜鼛龯鮴魌齑鳱龃鵓魈麅鮃鷨魐魼鼻鶙魆鸎鶙魆鼻齑齣齟鶂鼕魂鷤鳱鼻鹂鸿龕鹯黺麼龯鸬黫鸩鸧鸤鸡鼻鸠麺龆齑龘龁麮鼚鬾麦鶕drupal鳲龁鶈龃龵齊cms鼯鶼齑鸎龃龵齊鹜鹘鹖鹕齑龒龑黤龃鼵齊鹖鹕鹒鼻龵鬺鹥鹣鼻龀鷤鱇鼻鼑齑鬷鼽鬷麗麮鹜龵鼍鬳鬷黫齵鸙

鬲鯎鳜鱻齑齣齟鼽麁龵鸻鬰黜黐鬮麱龒龑鼻鹂鸿黄

实体变体:  
    内容:  
        内容实体类型:  
            节点:  
                文章(节点的Bundles)  
                基本页(节点的Bundles)  
            分类:  
                词汇表A(分类的Bundles)  
                词汇表B(分类的Bundles)  
                词汇表...  
            内容块:  
                块内容A(块的Bundles)  
                块内容B(块的Bundles)  
                块内容... (块的Bundles)  
    配置:  
        配置实体类型:  
            视图(没有bundles)  
            菜单(没有bundles)  
            角色(没有bundles)  

实体Entities:

鹏鴩魮鹍鹉鼽鬬齑龯drupal8鹒龒龑龃龵齊鬩鬾鬧鬤麼鲒鲏鯑鯫鯴鼻麱鷨齑麪麨鵱鹜鶔鬤麼鹽鹜鶔鶐黤龃龵鹈鬩鬾鬧鬤麼齑齆齊麱鷨鶞鶚鹜鶔鼻鴈鬣黂鬤麼黂鵾鵻黂鵟鵛黂鲅鲂麝齑鹏鷘鵤鹍鹉鼽鬬齑龒龑龃鵵魖鶚鹜鶔鼻鬠魼鮃鷨齑鸩麏鷼龵齊鯣鼻鹜鶔鬞鯧齑齍鳱龁鳮龃鳩鬜鹜鶔齑鼛鳩鬜鶞鶚鹜鶔鼻黜鴘齑麨龵齊麱鷨魔鶣龵鱀鷂鷀齑鳱鳩鰪鷂鷀鱼鱻黂鬚鱼鱻黂鲒鲏黂鬖鬕麝麝鲒鲏齑鸬鸋齆齊麱鷨鼛鶙鬓黜鴘鶞鶚齆黹鹜鶔鼻鬤麼黂鴈鬣黂鴫鬏黂鵟鵛麝麝齑鼵齮齆齊麱鷨黤龃齆鱀鷂鷀鼻龒龑麱鷨齑鳱黤龃龵齊龒龑鸙

鱊鱊鱊 龯drupal鹒龒龑鼕鶞鶚鼻鸠鬋鼚鷷齑麪麨龒黢黫鵾鬊鵆黁鲋黨鰅麳龵鲒鲏麼龯鷷齊鵆黁鰂齑黫黎黋鲋黨鰅龀黹鹘鯀龃鹄鬈鸩鼲鼻鰂黂鰨鴧鴕鶋鶣鶡鼻鶞鶚黂鰨鹈鵣鶣鼷鲒鲏鼻鶅鶄黜鳬黂鴍鴌鱣鱠鬆鬄黂鬤麼鴌鱻麝麝齑鲒鬀髼鬏鯔麪鷴鮷髺齑髹鰴鳱龃鼯鶼鹒龵齊鼚鯣鼻鳇鼯鶼齑髸髵龯鵗鷷鯈鯆麚龨鸚鼁齑黁鼯鵣鯔鴶鷷齊髳鱻鼽鮋鮈龒龑鰨齊鬀鴶齑鼕髱鴛黬髭龒龑鶂鼕鴞鴛髪黹鰌鶙齵鱇齪黄
髦鳇鼷髥龨黄鳱齟鵱鴃髣齊髡髟髝黈龵齊鲟龑齑龒龑鼯鶼鹒鯣髙鷙鷘
鹘鯀api黄鹂高鲒鲏龒龑鼻鹜鶔鶐鬤麼黂鶅鶄黂鶣鶡麝鸩鼲鴌鱻
鴧鰍鬧鹜鶔api黄龒龑鹡黫麦麁鹞龃鮷鷲鹜鶔鴧鰍齑鯧髸龯鴧鰍鬧鹜鶔麚龨鸚鼁齑龒黢黜髗鴕鶋
鱣鱠鬆鬄黄鷘鷼龒龑鼻鴍鴌鱜鱘
鹄鬈鼷黎黋黄龒龑鼻鷷鹄鬈鲋黨鯷龁黫鯗

麦鼁齆黹髳鼕鲒鲏鮂鹯鰟髕鴶髓鼯鵣鯣鷷鳲齜龢髏鷮齑麨鹻龵黽魴魈鸎鼽鵱龁鯔髋鶫齑髈麁鸩鼲黐鰔齑鼛鬷龢髏鼻鯑鳮龢髏鷮鼁鱀鼻鲒鲏齑鷌鸻鼽鯔龢髏齑髄魮鼁髂黫黨鹞鹽髄魤黬髭齘鴩齑龵鳂龵鳂鼻鶚鹂黬髭鸙

点燃好奇心,列出一个列子,先一窥实体的魅力吧:
在自定义模块的控制器中执行以下代码:

        $nodeStorage = \Drupal::entityTypeManager()->getStorage("node"); //获取节点实体储存处理器
        $nodeEntity = $nodeStorage->create(['type' => 'article', 'title' => '实体测试20180914', 'body' => "我的实体内容"]); //创建一篇文章(创建一个实体)
        $nodeEntity->save(); //保存实体

然后到管理页面后台的内容里面,看一看是不是就添加了一篇文章呢

$entity = \Drupal::entityTypeManager()->getStorage("node")->load(1);  
echo $entity->label();  

加载一个节点,显示它的标题

本书共88小节:

评论 (写第一个评论)