0

历史:

DB:表客户和标题

一个客户可以有多个头衔,但一个头衔只能有一个客户。所以我将使用一个简单的一对多关系,如下图所示:客户端模型

  class Client extends Eloquent {
      public function titles(){
          return $this->hasMany('titles');
      }  
  }

然后我只需使用以下内容获取所选标题的请求数据

  $clientTitles = Client::find(1)->titles;

总而言之,这应该列出所有与客户相关的标题。

我的问题确实涉及到这一点,因为我希望将我的标题表中的数据拆分为较小的表,因为我还在系统中的某处使用标题数据的某些方面,并且不需要每次都获取所有标题详细信息。

所以我会有另外三个与标题数据表相关的表

标题、Title_Artwork、Title_Details、Titles_List

现在,如果我使用与上面相同的方法,我将获得titles 表中的所有数据,但不会获得其他三个数据。那么我怎样才能更新我的关系,然后刮掉其他三个标题表,所以当我需要时,我可以获取所有数据,而不是。

还是有另一种方法可以做到这一点,或者不保持我所做的只是限制对我需要的字段的调用?

4

1 回答 1

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 而言,它被称为Eager Loading,要了解更多信息,您可以查看文档

它也适用于多重嵌套,我的意思是,如果你Title_Artwork还包含类似的关系 -

class TitleArtwork extends Eloquent{
  public function sometable(){
    return ..;
  }
}

然后你可以得到sometable使用的数据

$clientTitles = Client::with('Titles','Titles.titleartwork.sometable','Titles.titlelist')->where('id','=',1)->get();
于 2013-08-05T13:55:14.547 回答