Heim > php教程 > php手册 > laravel--has方法--查看关联关系

laravel--has方法--查看关联关系

WBOY
Freigeben: 2016-09-19 08:55:02
Original
1655 Leute haben es durchsucht

has()方法可以用来查询是否有关联关系的一个东西,一般其他的has方法 就是判断这个里面有没有值

<span style="color: #800080;">$packageOrders</span> = Company::has('packages'<span style="color: #000000;">)->get();<br>dd(</span><span style="color: #800080;">$packageOrders</span>);
Nach dem Login kopieren

而这句话的has方法意思就不一样了,他详细的逻辑是什么呢,怎么关联,怎么查询的。首先看一下dd($packageOrders)输出的东西是什么

可以看到输出的也是company的元素,总共取到的数据是18个,如果用

<span style="color: #800080;">$packageOrders</span> = Company::all();<span style="color: #000000;">
  dd(</span><span style="color: #800080;">$packageOrders</span>);
Nach dem Login kopieren

all()的方法来取,可以看到打印的数据是100多个,那么has方法是用什么东西 去筛选的,导致结果数据只有18个了。

$packageOrders = Company::has('packages'<span>)->get();<br>这句话的详细意思就是,先去company找和packages关联的那张表,看他们互相匹配的id是哪些数据,大概意思是这,首先去company模型查找与之对应的</span>
Nach dem Login kopieren
packages方法
Nach dem Login kopieren

那么packages方法是与app\CompanyPackage模型关联的,他们关联的ID是company_id,第三个参数表示用自己的ID值 去和companyPackage里的company_id匹配<br>那么到数据库的流程就是 先去company表里查找id的值,在到company_packages表中查看company_id的值,有没有匹配的,取出所有匹配的数据,匹配的数据取出的是company表的,不会带出
Nach dem Login kopieren
company_packages表的数据,也就是文章开头显示的数据了。<br><br>那么如果现在company模型里面的packages方法,第二个参数改为package_id的话,查询情况又会如何呢
Nach dem Login kopieren

那么  $packageOrders = Company::has('packages')->get(); 会到数据库里查company表里的id 和 company_packages表package_id互相匹配的值 在显示出来,<br>筛选就是这么筛选的,所以all()方法100多条数据,而has只有18条互相匹配的数据了
Nach dem Login kopieren
<br><br>
Nach dem Login kopieren
Nach dem Login kopieren
<br><br>
Nach dem Login kopieren
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage