1

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

从书中选择 *

select * from authors where book_id in (1, 2, 3, 4, 5, ...)

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

4

1 回答 1

-1

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

像这样定义您的模型书籍和作者:-

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();

我希望这对您有所帮助...我尚未在本地或测试数据库上进行测试。但是对帖子-标签关系使用了类似的急切加载。

于 2013-07-03T10:42:24.363 回答