Eager Loading使用IN(...)子句中父表的主键,如Laravel文档中明确说明的那样:
从书籍中选择*
从作者中选择*,其中book_id为(1,2,3,4,5,...)
是否可以不使用主键,但书表中的另一个键?甚至是从数据透视表中检索到的密钥?
答案 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();
我希望这可以帮助你......我没有在我的本地或测试数据库上测试过。但是对于帖子 - 标签关系使用了类似的热切加载。