Laravel / Eloquent - 使用主键以外的其他负载

时间:2013-06-05 13:20:18

标签: php laravel eloquent

Eager Loading使用IN(...)子句中父表的主键,如Laravel文档中明确说明的那样:

  

从书籍中选择*

     

从作者中选择*,其中book_id为(1,2,3,4,5,...)

是否可以不使用主键,但书表中的另一个键?甚至是从数据透视表中检索到的密钥?

1 个答案:

答案 0 :(得分:0)

是的,我们可以在非主要列上进行切换加载。为此,您需要在模型中定义db-data关系: -

定义您的模型Book&像这样的作者: -

class Books extends Eloquent {

    public static $table = 'books';    

     public function bookauthors(){
         return $this->has_many('authors','book_id');

     }

}


class Authors extends Eloquent {

    public static $table = 'authors';


     public function books()
     {
          return  $this->belongs_to('books','book_id');
     }

}

现在,您可以使用以下代码行来急切地在关键字“book_id”上为作者加载书籍: -

$books = Books::with(array('bookauthors'))->get();

我希望这可以帮助你......我没有在我的本地或测试数据库上测试过。但是对于帖子 - 标签关系使用了类似的热切加载。