历史:
DB:表客户端和标题
客户可以拥有多个标题,但标题只能有一个客户。所以我将使用简单的一对多关系,如下图所示: 客户端模型
class Client extends Eloquent {
public function titles(){
return $this->hasMany('titles');
}
}
然后我只需使用以下内容获取所选标题的请求数据
$clientTitles = Client::find(1)->titles;
总而言之,这应列出所有与客户相关的标题。
我的问题实际上是因为我希望将我的titles表中的数据拆分成较小的表格,因为我还在系统中的某个地方使用了标题数据的某些方面,并且不需要每个都获得所有的标题详细信息时间。
所以我会有另外三个与标题数据表相关的表
标题,Title_Artwork,Title_Details,Titles_List
现在,如果我使用与上面相同的内容,我将获得titles表中的所有数据,但不会获得其他三个数据。那么我怎么能更新我的关系然后刮掉其他三个标题表,所以当我需要时,我可以获得所有数据,而不是。
或者是否有另一种方法可以做到这一点,或者不保留我所做的只是限制对我需要的字段的调用?
答案 0 :(得分:0)
根据我的理解,我们假设你的Titles
模型有点像 -
class Titles extends Eloquent{
public function titleartwork(){
return ..
}
public function titledetails(){
return ..
}
public function titlelist(){
return ..
}
}
您的客户端模型是 -
class Client extends Eloquent {
public function titles(){
return $this->hasMany('titles');
}
}
因此,为了获取任何这些表的数据Title_Artwork, Title_Details, Titles_List
你可以这样做
$clientTitles = Client::with('Titles','Titles.titleartwork','Titles.titlelist')->where('id','=',1)->get();
就Laravel而言,它被称为渴望加载,了解更多信息,您可以查看doc
它也适用于多个嵌套,我的意思是如果您的Title_Artwork
也包含类似的关系 -
class TitleArtwork extends Eloquent{
public function sometable(){
return ..;
}
}
然后您可以使用
获取sometable
的数据
$clientTitles = Client::with('Titles','Titles.titleartwork.sometable','Titles.titlelist')->where('id','=',1)->get();