Eager Loading 使用 IN(...) 子句中的父表中的主键,正如 Laravel 文档中明确指出的那样:
从书中选择 *
select * from authors where book_id in (1, 2, 3, 4, 5, ...)
是否可以不使用主键,而是使用书表中的另一个键?甚至是从数据透视表中检索到的键?
是的,我们可以在非主列上进行预加载。为此,您需要在模型中定义 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();
我希望这对您有所帮助...我尚未在本地或测试数据库上进行测试。但是对帖子-标签关系使用了类似的急切加载。